Skip to content

Туған активтар иҫәбенә кредит

Native escrow - һанлы активтар өсөн иҫәп-хисап менән идара ителгән һаҡланыу механизмы. Аҡсаларҙы ҡушымтаға ҡараған иҫәбкә ебәреү урынына һәм был иҫәбен һаҡлау өсөн ҡушымта кодына таяныу урынына, escrow ISIs ҡиммәтен детерминистик протокол һаҡсылыҡ иҫәбенә күсерә һәм бөтә донъя дәүләтендә Escrow ғүмере циклын теркәп бара.

Баҙарҙа иҫәп-хисап өсөн урындағы эскровынан файҙаланығыҙ, Атай стилендәге сираттан тыш түләүҙәр буйынса координация, мөһим ваҡиғаларҙың бикләүҙәре һәм һаҡланған эскроу эштәрен ҡулланығыҙ.

Концепциялар

КонцепцияТасуирлау
EscrowIdҺайлаусы тарафынан һайланған идентификатор хаш менән уратып алына. Ул үтә күренмәле һәм аноним һаҡсылар араһында үҙенсәлекле булырға тейеш.
AssetEscrowRecordТранспарентлы һанлы активтар иҫәбенә һаҡланыу йәки бикләү.
AnonymousAssetEscrowRecordҺаҡланған депозит иҫәбен юҡҡа сығарыусы документтар, йөкләмәләр һәм раҫлауҙар менән тәьмин ителгән.
Һаҡлыҡ иҫәбеID, ID һәм активтар билдәләмәһенән алынған детерминистик протокол иҫәбенә.
Дәлилдәрҙең һешыДәлилдәр һешы фактураларҙы, хөкөмдәрҙе, хәбәрҙәрҙе, һаҡлау манифесттарын йәки башҡа сылбырҙан тыш иҫбатлауҙарҙы асыҡлай ала.

Транспарентлы яҙмаларҙа һатыусы, факультатив һатып алыусы, активтар билдәләмәһе, дөйөм сумма, һаҡ аҫтында тотоу иҫәбенең торошо, ғүмер циклы, тәртибе төрө, ҡалған сумма, ирекле сығарыу хоҡуғы, ирекле ваҡыттың тамамланыуы мөһерҙәре, иҫбатлау хэштәре, ваҡыт мөһәрҙәре һәм ирекле хәл итеү мәғлүмәттәре бар.

Һаҡ аҫты суммалары позитив һанлы актив күләме булырға тейеш һәм активтар билдәләмәһенең һанлы спецификацияһына тап килергә тейеш. Һаҡ аҫтын йәки бикләү әүҙем булһа, дөйөм активтар күсереүҙәре һаҡлыҡ иҫәбенә сыға алмай; һаҡлыҡтан сығыу юлдары түбәндә һүрәтләнгән һаҡ аҫты ISIs булып тора.

Баҙарҙағы банкротлыҡ

Баҙарҙа һаҡланыу системаһы сылбырҙағы активтарҙы түләү йәки тапшырыу эш аҙымынан ситтә сығарыуҙы координациялай.

ISIУны кем тапшыра ?Һөҙөмтә
OpenAssetEscrowҺатыусыПротокол һаҡ аҫтында һатыусының һанлы активын бикләй һәм Open баҙарҙа рекорд булдыра.
AcceptAssetEscrowСатып алыусыҺатып алыусыны теркәп, Open менән Accepted күсерә. Сатыусы үҙенең депозитын ала алмай.
MarkEscrowPaymentSentҠабул ителгән һатып алыусыAccepted -ға күсә PaymentSent һатып алыусы селтәрҙән тыш түләү ебәргәндән һуң.
ReleaseAssetEscrowҺатыусыPaymentSent менән Released күсерә һәм һатып алыусыға тотош суммаһын тапшыра.
CancelAssetEscrowҺатыусыOpen йәки Accepted-ны Cancelled-гә күсерә һәм һатыусыға түләү билдәләнмәйенсә кире ҡайтара.
OpenEscrowDisputeҺатыусы йәки ҡабул ителгән һатып алыусыAccepted йәки PaymentSent-ны Disputed-ға күсерә һәм иҫбатлау хэштегтарын ҡуша.
ResolveEscrowDisputeCanResolveEscrowDispute менән иҫәпDisputed менән Resolved күсә һәм сумманы һатып алыусы менән һатыусы араһында бүленә.

Низағдарҙы хәл итеү күләме кире түгел, ә buyer_amount + seller_amount депозит суммаһына тиң булырға тейеш. Һөнәрле аяҡтар рөхсәт ителә, әммә бөтә бүленеше ябыҡ балансты иҫәпкә алырға тейеш.

Rust Миҫал

Был миҫал һатыусы һәм һатып алыусы иҫәбтәре бар тип фаразлай, активтың билдәләмәһе һанлы булып теркәлгән, ә һатыусының балансы етерлек.

rust
use iroha::{
    client::Client,
    data_model::{
        isi::escrow::{
            AcceptAssetEscrow, MarkEscrowPaymentSent, OpenAssetEscrow,
            ReleaseAssetEscrow,
        },
        prelude::*,
    },
};
use iroha_crypto::Hash;

fn release_marketplace_escrow(
    seller_client: &Client,
    buyer_client: &Client,
    asset_definition_id: AssetDefinitionId,
) -> eyre::Result<()> {
    let escrow_id = EscrowId::new(Hash::new("docs-marketplace-escrow-001"));

    seller_client.submit_blocking(OpenAssetEscrow::with_evidence_hashes(
        escrow_id,
        asset_definition_id,
        Numeric::from(40_u64),
        vec![Hash::new("invoice:2026-001")],
    ))?;

    buyer_client.submit_blocking(AcceptAssetEscrow::new(escrow_id))?;
    buyer_client.submit_blocking(MarkEscrowPaymentSent::new(escrow_id))?;
    seller_client.submit_blocking(ReleaseAssetEscrow::new(escrow_id))?;

    let record = seller_client.query_single(FindAssetEscrowById::new(escrow_id))?;
    assert_eq!(record.status, AssetEscrowStatus::Released);
    assert_eq!(record.remaining_amount, Numeric::zero());

    Ok(())
}

Дөйөм активтар бикләүҙәре

Активтар бикләүҙәре бер үк һаҡланыу яҙмаһы тибын ҡуллана, әммә улар һатып алыусы-һатыусы тәҡдимдәре түгел. Улар тәғәйенләнештәге иҫәп өсөн аҡсаны бикләй һәм аҡсаны алыу өсөн айырым сығарыу органы талап ителә.

ISIУны кем тапшыра ?Һөҙөмтә
OpenAssetLockСығанаҡ иҫәбеЯҡшы сумманы бикләй, тәғәйенләнешен рекордлы һатып алыусы итеп теркәп ҡуя һәм статусын Locked тип билдәләй.
DrawdownAssetLockАзат итеү вәкәләте йәки тәғәйенләнеше, әгәр иреккә сығарыу вәкәләттәре билдәләнмәгәнҠалған һаҡлыҡтың бер өлөшөн йәки бөтәһен дә билдәләнгән урынға күсерә.
CancelAssetLockҠоҙаҡты асыуАктив бикләүҙе юҡҡа сығара һәм ҡалған сумманы асыусыға ҡайтарып бирә.
ExpireAssetLockВаҡыт үткәндән һуң ниндәй ҙә булһа транзакция органыҮткәндә expires_at_ms менән бикләнгән сумма юҡҡа сыға һәм ҡалған сумманы асыусыға ҡайтарыла.

DrawdownAssetLock Locked иҫәбен һаҡлай, ә күпмедер сумма тороп ҡала. Ҡалған сумма нулға еткәндә, статус DrawnDown булып китә һәм иҫәп ябыла.

rust
use iroha::{
    client::Client,
    data_model::{
        isi::escrow::{CancelAssetLock, DrawdownAssetLock, ExpireAssetLock, OpenAssetLock},
        prelude::*,
    },
};
use iroha_crypto::Hash;

fn drawdown_and_close_asset_locks(
    opener_client: &Client,
    destination_client: &Client,
    release_authority_client: &Client,
    asset_definition_id: AssetDefinitionId,
    destination: AccountId,
    release_authority: AccountId,
) -> eyre::Result<()> {
    let trusted_lock_id = EscrowId::new(Hash::new("docs-asset-lock-trusted"));

    opener_client.submit_blocking(OpenAssetLock::with_options(
        trusted_lock_id,
        asset_definition_id.clone(),
        destination.clone(),
        Numeric::from(40_u64),
        Some(release_authority),
        None,
        vec![Hash::new("milestone-plan-v1")],
    ))?;

    release_authority_client.submit_blocking(DrawdownAssetLock::new(
        trusted_lock_id,
        Numeric::from(15_u64),
    ))?;

    let partially_drawn =
        opener_client.query_single(FindAssetEscrowById::new(trusted_lock_id))?;
    assert_eq!(partially_drawn.status, AssetEscrowStatus::Locked);
    assert_eq!(partially_drawn.remaining_amount, Numeric::from(25_u64));

    opener_client.submit_blocking(CancelAssetLock::new(trusted_lock_id))?;
    let cancelled = opener_client.query_single(FindAssetEscrowById::new(trusted_lock_id))?;
    assert_eq!(cancelled.status, AssetEscrowStatus::Cancelled);

    let expiring_lock_id = EscrowId::new(Hash::new("docs-asset-lock-expiring"));
    opener_client.submit_blocking(OpenAssetLock::with_options(
        expiring_lock_id,
        asset_definition_id,
        destination,
        Numeric::from(10_u64),
        None,
        Some(0),
        Vec::new(),
    ))?;

    destination_client.submit_blocking(ExpireAssetLock::new(expiring_lock_id))?;
    let expired = opener_client.query_single(FindAssetEscrowById::new(expiring_lock_id))?;
    assert_eq!(expired.status, AssetEscrowStatus::Expired);

    Ok(())
}

Python әлеге ваҡытта дөйөм йоҙаҡтар өсөн юғары кимәлдәге ярҙамсыларҙы асыҡлай: open_asset_lock, drawdown_asset_lock, cancel_asset_lock һәм expire_asset_lock. Баҙарҙа һәм Python ҙан аноним ышанысҡа тотоноу өсөн InstructionBox JSON каноникаһын ҡулланып, SDK-тың JSON ҡасып сығыу шлюзы аша үтә. йәки SDK аша тапшырыу, беренсе класлы депозит төҙөүселәрҙе асыҡлау өсөн.

Низағтар

Баҙарҙа ышаныслы депозит бәхәскә инә ала: Accepted йәки PaymentSent. Тик теркәлгән һатыусы йәки һатып алыусы ғына бәхәсте асырға мөмкин. CanResolveEscrowDispute, йәки туранан-тура хәл итеүсе иҫәбенә бирелгән йәки роль аша мираҫ итеп алынған.

rust
use iroha::{
    client::Client,
    data_model::{
        isi::escrow::{OpenEscrowDispute, ResolveEscrowDispute},
        prelude::*,
    },
};
use iroha_crypto::Hash;
use iroha_executor_data_model::permission::escrow::CanResolveEscrowDispute;

fn resolve_disputed_escrow(
    admin_client: &Client,
    buyer_client: &Client,
    court_client: &Client,
    court: AccountId,
    escrow_id: EscrowId,
) -> eyre::Result<()> {
    admin_client.submit_blocking(Grant::account_permission(
        Permission::from(CanResolveEscrowDispute),
        court,
    ))?;

    buyer_client.submit_blocking(OpenEscrowDispute::with_evidence_hashes(
        escrow_id,
        vec![Hash::new("buyer-payment-receipt")],
    ))?;

    court_client.submit_blocking(ResolveEscrowDispute::with_evidence_hashes(
        escrow_id,
        Numeric::from(30_u64),
        Numeric::from(10_u64),
        vec![Hash::new("court-judgement-001")],
    ))?;

    let record = admin_client.query_single(FindAssetEscrowById::new(escrow_id))?;
    assert_eq!(record.status, AssetEscrowStatus::Resolved);
    assert_eq!(
        record.resolution.as_ref().map(|resolution| resolution.buyer_amount.clone()),
        Some(Numeric::from(30_u64)),
    );

    Ok(())
}

Аноним Escrow

Аноним конфиденциаль депозит шул уҡ баҙарҙа йәшәү циклын ҡуллана, әммә финанслау һәм ябыу активтар хәрәкәте һаҡланған. Һалымдар һәм аҡса алыусылар һаҡланған банкноталар эсендә йөкләмәләр, юҡҡа сығарыу билдәләре һәм иҫбатлау биттәрендә күрһәтелгән.

Прозрачный ISIАноним ISI
OpenAssetEscrowOpenAnonymousAssetEscrow
AcceptAssetEscrowAcceptAnonymousAssetEscrow
MarkEscrowPaymentSentMarkAnonymousEscrowPaymentSent
ReleaseAssetEscrowReleaseAnonymousAssetEscrow
CancelAssetEscrowCancelAnonymousAssetEscrow
OpenEscrowDisputeOpenAnonymousEscrowDispute
ResolveEscrowDisputeResolveAnonymousEscrowDispute

Портфель йәки провер инструменттары иҫбатлау ҡушымтаһын һәм йәмәғәт инештәрен төҙөргә тейеш. асыу бер экспозиция йөкләмәһен булдыра. Азатлыҡ, ғәмәлдән сығарыу һәм аноним бәхәстәрҙе сисеү өсөн бер экспониция йөкләмәһе тотонорға һәм һатып алыусыны, һатыусыны йәки бүленгән сығанаҡ йөкләмәләрен булдырырға кәрәк.

rust
use iroha::{
    client::Client,
    data_model::{
        isi::escrow::{
            AcceptAnonymousAssetEscrow, MarkAnonymousEscrowPaymentSent,
            OpenAnonymousAssetEscrow,
        },
        prelude::*,
        proof::ProofAttachment,
    },
};
use iroha_crypto::Hash;

fn open_anonymous_escrow(
    seller_client: &Client,
    buyer_client: &Client,
    escrow_id: EscrowId,
    asset_definition_id: AssetDefinitionId,
    funding_nullifiers: Vec<[u8; 32]>,
    escrow_commitment: [u8; 32],
    proof: ProofAttachment,
    root_hint: Option<[u8; 32]>,
) -> eyre::Result<()> {
    seller_client.submit_blocking(OpenAnonymousAssetEscrow::with_evidence_hashes(
        escrow_id,
        asset_definition_id,
        funding_nullifiers,
        escrow_commitment,
        proof,
        root_hint,
        vec![Hash::new("shielded-invoice")],
    ))?;

    buyer_client.submit_blocking(AcceptAnonymousAssetEscrow::new(escrow_id))?;
    buyer_client.submit_blocking(MarkAnonymousEscrowPaymentSent::new(escrow_id))?;

    Ok(())
}

Нигеҙҙә һаҡланған транзакция моделе өсөн Anonymous Transactions ҡарағыҙ.

SDK Ҡулланыу

Эскроу ярҙамы төрлөсә асыҡлана SDKs. Rust каноник типланған мәғлүмәттәр моделе бар. Python Хәҙерге ваҡытта активтарҙы бикләүгә ярҙам итеүселәрҙе асыҡлай. JavaScript һәм TypeScript ҡулланыу Kotodama Ҡунаҡсыларҙың шылтыратыуҙарына ышаныслылыҡ һала. Kotlin/JVM һәм Swift баҙар өсөн типографик файҙалы йөк төҙөүселәр һәм аноним ышаныс менән тәьмин итеүсе.

SDKБыл өҫкө йөҙөн ҡулланығыҙ.Күләмдәре
Rustiroha::data_model::isi::escrowБаҙарҙа депозит, дөйөм йоҙаҡтар, анонимные депозит, һорауҙар һәм ваҡиғалар.
PythonInstruction.open_asset_lock, TransactionDraft.open_asset_lock һәм клиент ярҙамсылары *_and_waitДөйөм активтар бикләү. Баҙар һәм аноним ышаныслы ярҙамсылары әлегә беренсе класлы Python алымдар түгел.
JavaScript / TypeScriptcompileKotodamaProgram от @iroha/iroha-js/kotodama-compilerKotodama килешеүҙәр эсендә эскроу хостинг шылтыратыуҙар.
Kotlin / JVMInstructionTemplate кластары менән org.hyperledger.iroha.sdk.core.model.instructionsБаҙар майҙаны һәм аноним эскроу ҡулайлаштырылған инструкция шаблондары.
Swift / iOSNativeEscrowInstructionBuilders һәм IrohaSDK.build*Escrow* ярҙамсыларыБаҙар һәм аноним депозит Norito JSON инструкция йөкләмәләре.

Төмәндәге миҫалдар инструкция төҙөүгә йүнәлтелгән. иҫәпкә финанслау, ҡултамғалар менән идара итеү һәм транзакцияларҙы тапшырыу һәр SDK өсөн нормаль ағымды күҙәтә.

Rust SDK

Rust SDK тулы урындағы яҡтыртыу йәки һорау / ваҡиға ярҙамы кәрәк саҡта ҡулланығыҙ. Юғарыла килтерелгән миҫалдарҙа баҙарҙа сығарыу, дөйөм ябылыу тарҡалыуы, бәхәстәрҙе хәл итеү һәм iroha::data_model::isi::escrow менән аноним һаҡлау төҙөлөшө күрһәтелгән.

rust
use iroha::{
    client::Client,
    data_model::{isi::escrow::OpenAssetEscrow, prelude::*},
};
use iroha_crypto::Hash;

fn open_and_read(
    client: &Client,
    asset_definition_id: AssetDefinitionId,
) -> eyre::Result<AssetEscrowRecord> {
    let escrow_id = EscrowId::new(Hash::new("docs-rust-sdk-escrow"));

    client.submit_blocking(OpenAssetEscrow::new(
        escrow_id,
        asset_definition_id,
        Numeric::from(10_u64),
    ))?;

    client.query_single(FindAssetEscrowById::new(escrow_id))
}

Python Яҡшылыҡ ҡағиҙәләре

Python SDK беренсе класлы ярҙамсыларҙы дөйөм активтарҙы бикләү өсөн асыҡлай. Уларҙы йылъяҙма түләүҙәр, иреккә сығарыу органы ярҙамында түләтеүҙәр, асыусының аннулированиеһы һәм ваҡыты тамамланған аҡсаны ҡайтарыу өсөн файҙаланыу.

python
client.open_asset_lock_and_wait(
    chain_id="dev-chain",
    authority="<source-account-id>",
    private_key_hex="<source-private-key-hex>",
    escrow_id="merchant-lock-001",
    asset_definition_id="<asset-definition-base58>",
    destination="<destination-account-id>",
    amount="2500",
    release_authority="<trusted-release-account-id>",
    expires_at_ms=1_704_000_000_000,
)

client.drawdown_asset_lock_and_wait(
    chain_id="dev-chain",
    authority="<trusted-release-account-id>",
    private_key_hex="<trusted-release-private-key-hex>",
    escrow_id="merchant-lock-001",
    amount="1000",
)

client.expire_asset_lock_and_wait(
    chain_id="dev-chain",
    authority="<any-account-id>",
    private_key_hex="<any-private-key-hex>",
    escrow_id="merchant-lock-001",
)

Ике яҡлы бикләү өсөн release_authority ҡалдырығыҙ; киләсәктең иҫәбенә drawdown_asset_lock тапшырырға мөмкин.

JavaScript һәм TypeScript Kotodama

JavaScript SDK әлеге ваҡытта туранан-тура урындағы эскроу транзакция төҙөүселәрҙе асыҡламай. Kotodama килешеүҙәрен урынлаштырыусы JavaScript йәки TypeScript ҡушымталары өсөн, Kotodama компиляторы менән экстроу хостинг саҡырыуҙарын төҙөгеҙ.

Туған эскроу хостинг шылтыратыуҙарына асыҡтан-асыҡ инеү күрһәткестәре кәрәк, сөнки компилятор ISIs үтә күренмәле эскроуға тарраҡ инеү йыйылмаларын ала алмай. Экспорт ителгән инеү нөктәләрендә escrow_* ингредиенттарын саҡырыусы wildcard иҫкәртеүҙәре ҡулланығыҙ.

js
import { compileKotodamaProgram } from "@iroha/iroha-js/kotodama-compiler";

const source = `
seiyaku MarketplaceEscrow {
  meta { abi_version: 1; }

  #[access(read="*", write="*")]
  kotoage fn run() permission(Admin) {
    let asset = asset_definition("62Fk4FPcMuLvW5QjDGNF2a4jAmjM");
    let offer = name("aitai_offer");
    let evidence = norito_bytes("00");

    call escrow_open_offer(offer, asset, 10, evidence);
    call escrow_accept(offer);
    call escrow_mark_payment_sent(offer);
    call escrow_release(offer);
  }
}
`;

const compiled = compileKotodamaProgram(source, {
  sourceName: "escrow.ko",
});

if (compiled.diagnostics.length > 0) {
  throw new Error(compiled.diagnostics.map((item) => item.message).join("\n"));
}

Низағ өсөн ҡулланыу escrow_open_dispute(offer, evidence) һәм escrow_resolve_dispute(offer, buyer_amount, seller_amount, evidence). Аноним конфискация хостинг шылтыратыуҙар ҡабул итә Norito файҙалы йөкләмә байттарын һорап, мәҫәлән: anonymous_escrow_open_offer(request).

Kotlin һәм JVM

Kotlin/JVM SDK үҙенсәлекле эскроу моделдәрен ҡулайлаштырылған инструкция өлгөләре. Һәр өлгө талап ителгән ҡырҙарҙы раҫлай һәм транзакция төҙөүсе ҡулланған каноник аргумент картаһын аса.

kotlin
import org.hyperledger.iroha.sdk.core.model.escrow.NativeEscrowPermissions
import org.hyperledger.iroha.sdk.core.model.instructions.AcceptAssetEscrowInstruction
import org.hyperledger.iroha.sdk.core.model.instructions.MarkEscrowPaymentSentInstruction
import org.hyperledger.iroha.sdk.core.model.instructions.OpenAssetEscrowInstruction
import org.hyperledger.iroha.sdk.core.model.instructions.ReleaseAssetEscrowInstruction
import org.hyperledger.iroha.sdk.core.model.instructions.ResolveEscrowDisputeInstruction

val open = OpenAssetEscrowInstruction(
    escrowId = "escrow-hash",
    assetDefinition = "xor#wonderland",
    amount = "42.5",
    evidenceHashes = listOf("invoice-hash"),
)
val accept = AcceptAssetEscrowInstruction("escrow-hash")
val paid = MarkEscrowPaymentSentInstruction("escrow-hash")
val release = ReleaseAssetEscrowInstruction("escrow-hash")
val resolve = ResolveEscrowDisputeInstruction(
    escrowId = "escrow-hash",
    buyerAmount = "30",
    sellerAmount = "12.5",
    evidenceHashes = listOf("judgement-hash"),
)

println(open.arguments)
println(NativeEscrowPermissions.CAN_RESOLVE_ESCROW_DISPUTE)

Аноним шаблондар түбәндәгесә була: OpenAnonymousAssetEscrowInstruction, AcceptAnonymousAssetEscrowInstruction, MarkAnonymousEscrowPaymentSentInstruction, ReleaseAnonymousAssetEscrowInstruction, CancelAnonymousAssetEscrowInstruction, OpenAnonymousEscrowDisputeInstruction, һәм ResolveAnonymousEscrowDisputeInstruction. Android Ява шылтыратыусылар тап килә ҡулланырға мөмкин NativeEscrowInstructions.* Төҙөүселәр Android артефакт.

Swift һәм iOS

Ҡоролтай Swift SDK конфиденциаль йөкләмәләр төҙөй Norito JSON файҙалы йөкләмәләр. NativeEscrowInstructionBuilders туранан-тура, йәки эквивалент IrohaSDK.build*Escrow* ярҙамсы, әгәр һеҙҙең ҡушымтаһы инде бар IrohaSDK миҫал.

swift
import IrohaSwift

let open = try NativeEscrowInstructionBuilders.openAssetEscrow(
    escrowId: "escrow-hash",
    assetDefinition: "xor#wonderland",
    amount: "42.5",
    evidenceHashes: ["invoice-hash"]
)
let accept = try NativeEscrowInstructionBuilders.acceptAssetEscrow(
    escrowId: "escrow-hash"
)
let paid = try NativeEscrowInstructionBuilders.markEscrowPaymentSent(
    escrowId: "escrow-hash"
)
let release = try NativeEscrowInstructionBuilders.releaseAssetEscrow(
    escrowId: "escrow-hash"
)
let resolve = try NativeEscrowInstructionBuilders.resolveEscrowDispute(
    escrowId: "escrow-hash",
    buyerAmount: "30",
    sellerAmount: "12.5",
    evidenceHashes: ["judgement-hash"]
)

Аноним Swift төҙөүселәр юҡҡа сығарыусы исемлектәр, сығыу йөкләмәләр исемлектәре, иҫбатлау һүҙлеге, һәм факультатив rootHint бәхәстәрҙе хәл итеүгә рөхсәт билдәһе NativeEscrowPermissions.canResolveEscrowDispute.

Һорауҙар һәм ваҡиғалар

Статус биттәренә, яраштырыу эштәренә һәм ярҙам инструменттарына эскроу һорауҙарын ҡулланығыҙ:

ҺорауМаҡсат
FindAssetEscrowByIdEscrowId менән бер үтә күренмәле депозит йәки йоҙаҡ уҡығыҙ.
FindAssetEscrowsПрозрачный депозит һәм бикләү яҙмалары исемлеге.
FindAssetEscrowsBySellerҺатыусы йәки йоҙаҡты асыусы тарафынан асылған яҙмаларҙы исемлеккә килтерегеҙ.
FindAssetEscrowsByBuyerБаҙарҙа һатып алыусы тарафынан ҡабул ителгән депозиттарҙы исемлекләгеҙ йәки маҡсатҡа йүнәлтелгән бурыстарҙы билдәләгеҙ.
FindAssetEscrowsByStatusAssetEscrowStatus иҫәбен алыу.
FindAnonymousAssetEscrowByIdEscrowId менән бер аноним депозит уҡығыҙ.
FindAnonymousAssetEscrows*Бөтә иҫәбе, һатыусы, һатып алыусы йәки статусы буйынса аноним депозиттарҙы исемлеккә индер.

EscrowEventFilter транспарентлы урындағы конфискация һәм конфискациялау сараларына яҙылырға мөмкин . ID, һатыусы, һатып алыусы, статусы һәм ваҡиғалар маскаһы. Opened, Accepted, PaymentSent, Released, Cancelled, Expired, Disputed, һәм Resolved. Аноним конфиденциаль иҫәп-хисаптар аноним конфидениаль һорауҙар аша тикшерелә.

Оператив иҫкәрмәләр

  • Оло счеттарҙы, яҙмаларҙы, ҡарарҙарҙы йәки аудиторҙар төркөмдәрен һаҡлағыҙ һәм уларҙы иҫбатлау сифатында беркетегеҙ.
  • Ҡабул итеүҙәрҙә тотороҡло EscrowId сығарылышын ҡулланыу, шуға күрә ҡабаттан һынауҙар бер үк тәҡдим өсөн икеләтә гарантиялар булдыра алмаясаҡ.
  • CanResolveEscrowDispute бары тик бәхәсле процесты үҙләштереүсе иҫәптәргә йәки ролдәргә генә бирелә.
  • Сылбырҙан тыш түләүҙәр менән тикшереүҙе ғариза сәйәсәте итеп ҡабул итегеҙ. Iroha һаҡланыу һәм йәшәү циклы күсештәрен теркәп бара; ул үҙенән-үҙе фиат йәки тышҡы түләү рельстарын тикшермәй.