Skip to content

مقامی اثاثہ جات کا حصول

Native escrow اعداد و شمار کے اثاثوں کے لئے ایک لیجر کے زیر انتظام ذخیرہ کرنے کا طریقہ کار ہے۔ درخواست کے مالک اکاؤنٹ میں اثاثے بھیجنے اور اس اکاؤنٹ کی حفاظت کے ل application درخواست کوڈ پر انحصار کرنے کے بجائے ، اسرو ISIs قدر کو ایک تعیناتی پروٹوکول کی نگہداشت کے اکاؤنٹ میں منتقل کریں اور عالمی حالت میں اسرو زندگی کا دور ریکارڈ کریں۔

مارکیٹ پلیس تصفیہ کے لئے مقامی اسکرو کا استعمال کریں ، آٹائی طرز کی آف چین ادائیگی کوآرڈینیشن ، سنگ میل تالے ، اور حفاظتی اسرو ورک فلوز جو لیجر کے قابل زندگی سائیکل کی حالت کی ضرورت ہے۔

تصورات

تصورتفصیل
EscrowIdکال کرنے والے کی طرف سے منتخب کردہ شناخت کنندہ ایک ہیش لفافے. یہ شفاف اور گمنام escrow کے درمیان منفرد ہونا ضروری ہے.
AssetEscrowRecordشفاف عددی اثاثوں کی حراست یا لاک ریکارڈ۔
AnonymousAssetEscrowRecordگارنٹی شدہ کریڈٹ ریکارڈ، منسوخ کرنے والوں، عہدوں اور ثبوت کے attachments کی طرف سے حمایت.
نگہداشت اکاؤنٹڈیٹرمینسٹ پروٹوکول اکاؤنٹ جو چین 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(())
}

عام اثاثوں کے تالے

اثاثوں کے تالے ایک ہی ذخیرہ اندوزی ریکارڈ کی قسم کا استعمال کرتے ہیں ، لیکن یہ خریدار بیچنے والے کی پیش کش نہیں ہیں۔ وہ منزل مقصود اکاؤنٹ کے لئے فنڈز کو لاک کرتے ہیں اور اختیاری طور پر فنڈز نکالنے کے ل a علیحدہ جاری کرنے والی اتھارٹی کی ضرورت ہے۔

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 escape hatch، یا ایک کے ذریعے پیش 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(())
}

گمنام ایسکرو

گمنام اسرو ایک ہی مارکیٹ لائف سائیکل کا استعمال کرتا ہے ، لیکن فنڈنگ اور بند ہونے والے اثاثوں کی نقل و حرکت کو محفوظ کیا جاتا ہے۔ عوامی ریکارڈ اب بھی بیچنے والے ، خریدار ، حیثیت ، ثبوت ہیشز ، ٹائم اسٹیمپ ، اور ثبوت سے منسلک تحریک کے ریکارڈز کو ذخیرہ کرتا ہے۔ حفاظتی نوٹوں کے اندر موجود رقم اور وصول کنندگان کی نمائندگی عہدوں، منسوخ کرنے والے اور ثبوت منسلک سے کی جاتی ہے۔

شفاف 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 جب آپ کو مکمل مقامی کوریج یا استفسار / واقعہ کی حمایت کی ضرورت ہو۔ مذکورہ بالا مثالوں میں مارکیٹ پلیس ریلیز ، عمومی لاک ڈاؤن ، تنازعات کے حل، اور گمنام escrow کی تعمیر 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 فی الحال براہ راست مقامی ایسرو ٹرانزیکشن بلڈرز کو بے نقاب نہیں کرتا ہے۔ JavaScript یا TypeScript ایپلی کیشنز کے لئے جو Kotodama معاہدوں کو تعینات کرتے ہیں ، Kotodama کمپائلر کے ساتھ ایسرو ہوسٹ کالز مرتب کریں۔

مقامی ایسکرو ہوسٹ کالز کو صریح رسائی اشارے کی ضرورت ہوتی ہے کیونکہ کمپائلر opaque escrow ISIs کے لئے تنگ رسائی سیٹ حاصل نہیں کرسکتا ہے۔ برآمد شدہ انٹری پوائنٹس پر وائلڈ کارڈ اشارے کا استعمال کریں جو escrow_* بلٹ میں کال کرتے ہیں۔

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 مثال موجود ہو تو مساوی IrohaSDK.build*Escrow* معاون کو فون کریں۔

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 حراستی اور لائف سائیکل میں منتقلی کو ریکارڈ کرتا ہے۔ یہ خود ہی fiat یا بیرونی ادائیگی کے ریلوں کی تصدیق نہیں کرتا ہے۔