በእውነተኛ ዓለም ውስጥ ያሉ ሀብቶች
በእውነተኛ ዓለም ሀብቶች (RWAs) ባለቤትነት ወይም ቁጥጥር በሰንሰለት ላይ የሚከታተሉ ከሰንሰለት ውጭ ያሉ ንብረቶች ሞዴል ። በ Iroha ውስጥ ፣ RWA የተፈጠረ መታወቂያ ፣ የባለቤት መለያ ፣ ብዛት ፣ የንግድ ሜታዳታ ፣ መነሻ እና አማራጭ የሕይወት ዑደት ቁጥሮች ያሉት የተመዘገበ የመቁጠሪያ ክፍል ነው ።
RWAs ከቁጥር ንብረቶች ቀሪዎች ይለያያሉ:
- የቁጥር ሀብት በሂሳብ የተያዘ ተለዋዋጭ ሚዛን ነው
- አንድ NFT ከአንድ ባለቤት ጋር በአንድ ሰንሰለት ላይ ልዩ መዝገብ ነው
- አንድ RWA የንግድ ሜታዳታ, ብዛት, ይዞታዎች, ማቀዝቀዣዎች, የክፍያ ሁኔታ, መነሻ, እና ተቆጣጣሪ ፖሊሲ ሊይዙ የሚችሉ እቃዎች ናቸው.
RWAs ን መጠቀም መቁጠሪያው ከሰንሰለት ውጭ የሆነ የተወሰነ ጭማሪን ብቻ ሳይሆን የሚቀላቀል ሚዛንን ለመወከል ሲያስፈልግ።
RWA ጭነት
አንድ RWA ጭነት የሚከተሉትን ያካትታል:
id: የተፈጠረው የካኖኒክ RWA መታወቂያ፣<hash>$<domain>ተብሎ ይታያል።owned_by: በወቅቱ የፓርቲው ባለቤት የሆነው ሂሳብquantity: በፓርቲው የተወከለው ያልተቋረጠ ብዛትspec: የቁጥር ዝርዝር መግለጫ፣ ለምሳሌ አሥርኛ ደረጃprimary_reference: ከሰንሰለት ውጭ ዋነኛው ደረሰኝ፣ የምስክር ወረቀት፣ የክፍያ ማስረጃ ወይም የመመዝገቢያ ማጣቀሻstatus: አማራጭ የንግድ ሁኔታ ጽሑፍmetadata: ለንግድ አውድ እና መረጃ ጠቋሚነት ጥቅም ላይ የዋሉ ትናንሽ JSON መስኮችparents: ይህንን ቡድን ለማምረት ጥቅም ላይ የዋሉ የመነሻ ጭነቶችcontrols: ተቆጣጣሪ ሂሳቦች፣ የተቆጣጣሪ ሚናዎች እና የተፈቀዱ የቁጥጥር ሥራዎችis_frozenእናheld_quantity: የህይወት ዑደት ሁኔታ በሂደቱ ጊዜ ተፈጻሚነት ያለው
በሰንሰለት ላይ ያለውን ጠቃሚ ጭነት ውስብስብ ያድርጉ። ትላልቅ የሕግ ሰነዶችን ፣ የምርመራ ሪፖርቶችን እና የኦዲት ጥቅሎችን ከ WSV ውጭ ያስቀምጡ ፣ ከዚያ ዲጀስት ፣ URI ፣ SoraFS ዱካ ወይም ግልፅ ማጣቀሻን ወደ RWA ሜታዳታ ውስጥ ያስገቡ ።
መታወቂያዎች
RegisterRwa ለተጠቃሚው የተመረጠውን id አይቀበልም ፣ እና የ owner መስክ አይቀበልም። የግብይት ባለሥልጣን የመጀመሪያውን owned_by ሂሳብ ይሆናል ፣ እናም የአሂደቱ ጊዜ በዒላማው ጎራ ውስጥ RwaId ያመነጫል።
የ RWA ID ጽሑፍ ቅርጽ የሚከተለው ነው-
<generated-hash>$<domain>ለምሳሌ፡-
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef$commodities.universalማመልከቻዎች የንግድ መታወቂያዎቻቸውን በ primary_reference ወይም metadata, ከዚያም የተፈጠሩትን ያግኙ RwaId ከ RwaEvent::Created, FindRwas, /v1/rwas, ወይም የግብይት ግዴታዎች ከተፈጸሙ በኋላ የተቀመጠው የአሰሳ መንገድ።
የሕይወት ዑደት
የተለመዱ RWA የስራ ፍሰቶች የሚከተሉትን ያካትታሉ:
| እንቅስቃሴ | የተተገበረ ባህሪ |
|---|---|
RegisterRwa | በአንድ ጎራ ውስጥ የተፈጠረ- ID ጭነት ይፍጠሩ; የግብይት ባለሥልጣን owned_by ይሆናል. |
TransferRwa | መጠን ወደ ሌላ መለያ ይዛወሩ. ሙሉ ዝውውር ሊለወጥ ይችላል owned_by. በከፊል ዝውውር የተፈጠረ የተለየ የልጆች ጭነት ይፈጥራል ID. |
HoldRwa | የመጠባበቂያ መጠን: የተዋቀረ መቆጣጠሪያ እና hold_enabled ያስፈልጋል. |
ReleaseRwa | የተያዘውን መጠን ማስወገድ። የተዋቀረ መቆጣጠሪያ እና hold_enabled ይጠይቃል። |
FreezeRwa | መደበኛ ባለቤት ስራዎችን ያግድ. የተዋቀረ መቆጣጠሪያ እና freeze_enabled ይጠይቃል. |
UnfreezeRwa | መደበኛ ባለቤት ተግባራትን እንደገና ማግበር። የተዋቀረ መቆጣጠሪያ እና freeze_enabled ይጠይቃል ። |
RedeemRwa | በቋሚነት መጠኑን ከሽያጭ ማስወገድ። ባለቤቱ ወይም አስተዳዳሪው redeem_enabled እውነት ከሆነ ማቅረብ ይችላል ። |
MergeRwas | ተመሳሳይ ጎራ ያላቸው የወላጅ እቃዎች እና ስፔክቶችን በአንድ የተፈጠረ የልጆች እቃ ውስጥ ያዋህዱ ። |
ForceTransferRwa | መጠን በመቆጣጠሪያ ፍሰት በኩል ይንቀሳቀሱ. የተዋቀረ መቆጣጠሪያ እና force_transfer_enabled ይጠይቃል. |
SetRwaControls | የፓርት ቁጥጥር ፖሊሲውን ይተካል። ባለቤት ወይም ተቆጣጣሪን ይጠይቃል ። |
SetKeyValue<Rwa> / RemoveKeyValue<Rwa> | የፓርት ሜታዳታ ማዘመን። ባለቤት ወይም ተቆጣጣሪ ይጠይቃል፤ የተጋለጡ ፓርኮች ተቆጣጣሪ ያስፈልጋቸዋል። |
አሁን ባለው ኮድ ውስጥ UnregisterRwa መመሪያ የለም ። የተገለጸው ብዛት ሲሰጥ ፣ ሲበላው ፣ ሲያስተካክል ወይም በሌላ መንገድ ከሽያጭ ሲወገድ ከሰንሰለት ውጭ ያለውን ጭነት በ RedeemRwa ያስወግዱ ።
ሜታዳታ እና ቁጥጥር
አፕሊኬሽኖችን ለመለየት እና ምርመራ ለማድረግ የሚረዱ ትናንሽ እውነታዎችን ለማግኘት ሜታዳታ ይጠቀሙ:
- የአክሲዮን መደብ፣ ኤሚቲዩት፣ የዋስትና ባለቤት ወይም የምዝገባ ማጣቀሻ
- መጋዘን ፣ ዋልድ ፣ ISIN ፣ የክፍያ ወይም የምስክር ወረቀት መታወቂያዎች
- የይገባኛል ጥያቄዎችና የሕግ ሰነዶች ይዘት ሃሽ
- SoraFS ትላልቅ የምስክር ወረቀቶች መንገድ ወይም ግልፅ ማጣቀሻዎች
- ከሰንሰለት ውጭ ባሉ አገልግሎቶች ጥቅም ላይ የሚውሉት የእድሜ ገደብ፣ የሕግ ባለሥልጣን ወይም የመጣጣም መለያዎች
የተተገበረው RwaControlPolicy የሚከተሉትን መስኮች ይ containsል-
{
"controller_accounts": [],
"controller_roles": [],
"freeze_enabled": true,
"hold_enabled": true,
"force_transfer_enabled": false,
"redeem_enabled": true
}የተቆጣጣሪ መለያዎች እና ሚናዎች የሚመለከታቸው የቦሊያን ባንዲራዎች በሚያስችሏቸው ተግባራት ብቻ ሊፈጽሙ ይችላሉ ። የአሁኑ የቁጥጥር ጭነት የተቆጣጣሪ ማንነቶችን እና የአሠራር ባንዲራዎችን ይ containsል ። የማስተላለፍ ፍቃድ ዝርዝሮች እና የተሰቀሉ transfers ደንቦች ከዚህ ጥቅማጥቅሞች ውጭ ናቸው።
ጥያቄዎች, ክስተቶች እና APIs
አጠቃቀም FindRwas ተመዝግቧል RWA የቀጥታ ዝማኔዎች የሚያስፈልጋቸው መተግበሪያዎች Rwa የመረጃ ክስተቶች የተፈጠሩ፣ ባለቤትነት የተለወጡ፣ የተከፋፈሉ፣ የተዋሃዱ፣ የተመለሱ፣ የቀዘቀዙ፣ ያልተቀዘቁ፣ የተካሄደው፣ የተለቀቀው፣ የኃይል ማስተላለፍ፣ የመቆጣጠሪያ ለውጥ እና ሜታዳታ ክስተቶች።
Torii እንደ /v1/rwas እና /v1/rwas/query ያሉ ሰንሰለት-የመንግስት መንገዶችን እንዲሁም እንደ /v1/explorer/rwas እና /v1/explorer/rwas/{rwa_id} ያሉ የአሰሳ መንገዶችን ያጋልጣል ፣ ይህ የመንገድ ቤተሰብ ሲፈታ ። የተፈጠሩ ደንበኞች በአንድ ኖድ ከተጋለጠው ትክክለኛ የምላሽ ቅርፅ ይልቅ የቀጥታውን /openapi ሰነድ ይመርጣሉ።
Taira ላይ ይሞክሩት
የህዝብ Taira በአሁኑ ጊዜ RWA ዕቃዎችን መመዝገብ አለመሆኑን ያረጋግጡ:
curl -fsS 'https://taira.sora.org/v1/rwas?limit=5' \
| jq '{total, rwa_ids: [.items[].id]}'በቀጥታ Taira OpenAPI ሰነድ የተጋለጡትን የ RWA መስመሮች ይዘርዝሩ:
curl -fsS https://taira.sora.org/openapi.json \
| jq -r '.paths | keys[] | select(startswith("/v1/rwas") or startswith("/v1/explorer/rwas"))'ክፍት items ውፅዓት የሚጠበቀው ገና ምንም የህዝብ ዕቃዎች ካልተመዘገቡ ነው ። ምዝገባ ፣ ዝውውር ፣ ማቆየት ፣ ማቀዝቀዣ እና መመለስ የተፈረሙ ግብይቶች ናቸው።
ሞክር
ከዚህ በታች የቀረቡት ምሳሌዎች ከ Python SDK ገጽታዎች ይጠቀማሉ የተጋራ ማዋቀር. ሂሳቡን IDs ፣ የግል ቁልፎችን እና የተፈጠረውን ጭነት IDs ግብይት ከማቅረብዎ በፊት ከእራስዎ አውታረመረብ ጋር በመተካት።
RWA API መንገዶችን ያግኙ
ይህ የንባብ-ብቻ ምሳሌ የሚሰራውን Torii አንቀሳቃሽ ይጠይቃል የትኞቹ መተግበሪያ-ተኮር RWA መስመሮች እንደተፈቀደላቸው:
from iroha_python import create_torii_client
client = create_torii_client("https://taira.sora.org")
openapi = client.request_json("GET", "/openapi", expected_status=(200,))
rwa_paths = sorted(
path for path in openapi.get("paths", {}) if path.startswith("/v1/rwas")
)
for path in rwa_paths:
print(path)ዝርዝሩ ባዶ ከሆነ ኖዱ አሁንም በሌሎች Torii APIs በኩል የ RWA መመሪያዎችን እና መጠይቆችን ሊደግፍ ይችላል ፣ ግን አማራጭ የሆነውን JSON የመንገድ ቤተሰብ አያጋልጥም።
የመጋዘን ደረሰኝ መመዝገብ
አንድ የንግድ ድርጊት አንድ የተፈረመ ግብይት መሆን አለበት ጊዜ ረቂቅ ይጠቀሙ. የንግድ ደረሰኝ ቁጥር ውስጥ ይሄዳል primary_reference; መለያ ID ግብይቱ ተሳትፎ በኋላ ይፈጠራል.
from iroha_python import TransactionConfig, TransactionDraft
config = TransactionConfig(
chain_id=CHAIN_ID,
authority=alice,
metadata={**TX_METADATA, "source": "rwa-docs"},
)
draft = TransactionDraft(config)
draft.register_rwa(
{
"domain": "commodities.universal",
"quantity": "100",
"spec": {"scale": 0},
"primary_reference": "warehouse-receipt-001",
"status": "active",
"metadata": {
"asset_class": "commodity",
"commodity": "copper",
"warehouse": "DXB-01",
"inspection_report": "sorafs://reports/copper-001.json",
},
"parents": [],
"controls": {
"controller_accounts": [alice],
"controller_roles": [],
"freeze_enabled": True,
"hold_enabled": True,
"force_transfer_enabled": False,
"redeem_enabled": True,
},
}
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ግብይቱ ከተቀበለ በኋላ ዝርዝር ይፈጠራል RWA IDs ሰንሰለት-የግዛት መስመሮች ቀኖናዊውን IDs ያጋልጣሉ; አንድን ID ወደ primary_reference ወይም ሜታዳታ መልሰው ማዛመድ በሚፈልጉበት ጊዜ ክስተቶችን ወይም አሰሳ ዝርዝሮችን ይጠቀሙ:
page = client.list_rwas_typed(limit=20, offset=0)
for lot in page.items:
print(lot.id)የአስፕሎረር-የተፈቀደላቸው አንጓዎች የበለጠ ሀብታም ትንበያዎችን ሊመልሱ ይችላሉ:
page = client.list_explorer_rwas_typed(domain="commodities.universal")
for lot in page.items:
print(lot.id, lot.primary_reference, lot.owned_by, lot.quantity)ጊዜያዊ አቋራጭነት
የተፈጠረውን ይጠቀሙ RWA ID ይህ ምሳሌ alice ባለቤት ነው እንዲሁም እንደ ተቆጣጣሪ ሆኖ የተዋቀረ ነው hold_enabled.
warehouse_lot_id = (
"0123456789abcdef0123456789abcdef"
"0123456789abcdef0123456789abcdef$commodities.universal"
)
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.transfer_rwa(warehouse_lot_id, quantity="10", destination=bob)
draft.hold_rwa(warehouse_lot_id, quantity="5")
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ከሰንሰለት ውጭ ያለው ሂደት ከተሳካ በኋላ ReleaseRwa ያቅርቡ:
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.release_rwa(warehouse_lot_id, quantity="5")
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)የቁጥጥር እና የኦዲት ሜታዳታ ይጨምሩ
መቆጣጠሪያዎች እና ሜታዳታ የተለዩ ናቸው. ለተቆጣጣሪ ፖሊሲዎች መቆጣጠሪያዎችን ይጠቀሙ, እና አፕሊኬሽኖች ወይም ኦዲተሮች ለማሳየት የሚያስፈልጋቸውን እውነታዎች ለሜታዳታ:
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.set_rwa_controls(
warehouse_lot_id,
{
"controller_accounts": [alice],
"controller_roles": [],
"freeze_enabled": True,
"hold_enabled": True,
"force_transfer_enabled": True,
"redeem_enabled": True,
},
)
draft.set_rwa_key_value(warehouse_lot_id, "auditor", "alice")
draft.set_rwa_key_value(
warehouse_lot_id,
"proof_hash",
"sha256:2b1c7a4e...",
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)የክፍያ ወይም የጡረታ መጠን
RedeemRwa የተወከለው ከሰንሰለት ውጭ ንብረት ከተሰጠ ፣ ከተበላሸ ፣ ወደ ጡረታ ከተወሰደ ወይም በሌላ መንገድ ከሽያጭ ከተወገደ በኋላ ያቅርቡ። ይህ የቀረበውን ብዛት በቋሚነት ከመደርደሪያው ይቀነሳል ። መደርደሩ redeem_enabled ሊኖረው ይገባል ፊርማው ባለቤት ወይም ተቆጣጣሪ መሆን አለበት ።
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.redeem_rwa(warehouse_lot_id, quantity="1")
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ማክበር በሚያረጋግጥበት ጊዜ መቋረጥ
FreezeRwa ከሰንሰለት ውጭ የሚደረግ ግምገማ መደበኛ ባለቤት ሥራዎችን ማገድ ሲያስፈልገው ማስገባት አለበት። ፊርማው ተቆጣጣሪ መሆን አለበት ። የጅምላው freeze_enabled ሊኖረው ይገባል.
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.freeze_rwa(warehouse_lot_id)
draft.set_rwa_key_value(
warehouse_lot_id,
"review",
{
"status": "frozen",
"reason": "custodian inventory check",
"case_id": "OPS-2026-0042",
},
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ግምገማው ካለቀ በኋላ UnfreezeRwa ያቅርቡ:
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.unfreeze_rwa(warehouse_lot_id)
draft.set_rwa_key_value(
warehouse_lot_id,
"review",
{"status": "cleared", "case_id": "OPS-2026-0042"},
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ደረሰኝ ደረሰኝ
የክፍያውን ቁጥር በ primary_reference እና ሜታዳታ በማከማቸት አንድን ደረሰኝ እንደ RWA ጭነት ይወክሉ። ከተመዘገቡ በኋላ ለማስተላለፍና ለመመለስ የተፈጠረውን ID ይጠቀሙ።
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.register_rwa(
{
"domain": "receivables.universal",
"quantity": "50000",
"spec": {"scale": 2},
"primary_reference": "INV-2026-0007",
"status": "issued",
"metadata": {
"asset_class": "invoice",
"currency": "USD",
"debtor": "example-buyer",
"due_date": "2026-06-30",
"document_hash": "sha256:4df4c8...",
},
"parents": [],
"controls": {
"controller_accounts": [alice],
"controller_roles": [],
"freeze_enabled": True,
"hold_enabled": False,
"force_transfer_enabled": False,
"redeem_enabled": True,
},
}
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ተቀባይነት ያለው ገንዘብ ሲከፈል ወይም ሲከፈል የተፈጠረውን የክፍያ ክፍል ID ይጠቀሙ:
invoice_lot_id = (
"fedcba9876543210fedcba9876543210"
"fedcba9876543210fedcba9876543210$receivables.universal"
)
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.transfer_rwa(invoice_lot_id, quantity="50000", destination=bob)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ከሰንሰለት ውጭ ክፍያ በኋላ የተገለጸውን መጠን ማስመለስ:
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=bob, metadata=TX_METADATA)
)
draft.redeem_rwa(invoice_lot_id, quantity="50000")
envelope = draft.sign_with_keypair(bob_pair)
client.submit_transaction_envelope_and_wait(envelope)የካርቦን ብድር ጡረታ
የሚጠየቁትን የካርቦን ክሬዲት ከሽያጭ ለማስወገድ RedeemRwa ያቅርቡ። ከሰንሰለት ውጭ ያለውን የምስክር ወረቀት ወይም የምዝገባ ማስረጃ በሜታዳታ ውስጥ ያስቀምጡ:
carbon_lot_id = (
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa$carbon.universal"
)
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.redeem_rwa(carbon_lot_id, quantity="250")
draft.set_rwa_key_value(
carbon_lot_id,
"retirement_certificate",
"sorafs://certificates/carbon-credit-2026-001-retired.json",
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)ሁለት እቃዎች ይዋሃዱ
ሁለት ከሰንሰለት ውጭ ያሉ አከባቢዎች ሲቀላቀሉ ሎቶች ይቀላቀሉ። ወላጆች በተመሳሳይ ጎራ ውስጥ መሆን አለባቸው እና ተመሳሳይ መጠን መጠንን ይጠቀማሉ ። የሩጫ ጊዜ የልጅ ሎቱን ID ያመነጫል ።
warehouse_lot_id_2 = (
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb$commodities.universal"
)
draft = TransactionDraft(
TransactionConfig(chain_id=CHAIN_ID, authority=alice, metadata=TX_METADATA)
)
draft.merge_rwas(
{
"parents": [
{"rwa": warehouse_lot_id, "quantity": "40"},
{"rwa": warehouse_lot_id_2, "quantity": "60"},
],
"primary_reference": "warehouse-receipt-003",
"status": "merged",
"metadata": {
"asset_class": "commodity",
"commodity": "copper",
"warehouse": "DXB-01",
"merge_reason": "same custodian and quality grade",
},
}
)
envelope = draft.sign_with_keypair(alice_pair)
client.submit_transaction_envelope_and_wait(envelope)የ Python ግብይት ሙሉ ምሳሌ ለማግኘት Real-World Assets የሚለውን ተመልከት።