Байгаль орчин үеийн хөрөнгө
Үнэн ертөнцөд хөрөнгө (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-д аж ахуйн тодорхойлолтыг хадгалах, дараа нь RwaEvent::Created, FindRwas, /v1/rwas, эсвэл гүйлгээний үүрэг гүйцэтгээс хойш тогтоосон хайгуулын замаар үүссэн RwaId-ийг олж харах ёстой.
Амьдралын мөчлөл
Нийтлэг RWA ажлын урсгал нь:
| Үйл ажиллагаа | Үйл ажиллагааны хэрэгжилт |
|---|---|
RegisterRwa | ID гарын үсэг үүсгэн бүтээх; гүйлгээний эрх баригч нь owned_by болно. |
TransferRwa | Тоо хэмжээг өөр данс руу шилжүүлнэ. Бүрэн шилжүүлэлтээр owned_by өөрчлөгдөж болно. Хэсэгчилсэн шилжүүлэлт нь үүсгэсэн ID бүхий тусдаа дэд багц бий болгоно. |
HoldRwa | Нөөцийн хэмжээ. Урьдчилсан хяналтын тоног төхөөрөмж, hold_enabled . |
ReleaseRwa | Хөөцөлдсөн хэмжээг арилгаж, тохируулсан хяналтын систем болон hold_enabled . |
FreezeRwa | Байгууллагын үйл ажиллагааг зогсоож, тохируулсан хяналтын систем болон freeze_enabled шаарддаг. |
UnfreezeRwa | Байшин эзэмшигчдийн үйл ажиллагааг сэргээх. Захиргааны удирдлага болон freeze_enabled . |
RedeemRwa | Эргэлтэд буй тоо хэмжээг бүрмөсөн хасна. redeem_enabled нь true үед эзэмшигч эсвэл хянагч үүнийг илгээж болно. |
MergeRwas | Тухайн бүс нутаг дэвсгэртэй эцэг эх хэсгийн хэмжээг нийлүүлж, төрөлжсөн хүүхдийн хэсгийг бүрдүүлэх. |
ForceTransferRwa | Томоохон хэмжээг хяналтын тоног төхөөрөмжийн урсгалд дамжуулахад тохируулсан хяналт болон force_transfer_enabled . |
SetRwaControls | Хөдөлмөрийн эзэмшигч эсвэл хяналтын ажилтан шаарддаг. |
SetKeyValue<Rwa> / RemoveKeyValue<Rwa> | Тоног төхөөрөмжийн метабараа шинэчлэх. Хувь эсвэл хяналтын ажилтан шаарддаг; мөсөн хувьцааг хяналт тавих ажилтан шаардаж байна. |
Одоогийн кодт UnregisterRwa заавар байхгүй. Төлөөлөн хэмжээг нийлүүлж, хэрэглэж, тохирсон эсвэл эргэлтээс өөрөөр нь гаргахдаа RedeemRwa-ийн хамт зах зээлийн гадаад хэсгийг буцааж өгөх.
Metadata болон хяналт
Нэвтрүүлэгт хэсгийг тодорхойлж, баталгаажуулахэд туслах цогц баримтын метабараа ашиглах:
- Ашигт малтмалын анги, эмитент, хадгаламжлагч, бүртгэлийн сүлжээ
- хадгаламж, хаалтын сан, ISIN, фактурын болон гэрчилгээний тодруулагч
- Гэрчилгээ, эрх зүйн баримт бичгийн агуулгын хэшүүд
- SoraFS томоохон гэрчилгээний багцын замыг эсвэл явдлын сүлжээ
- зах зээлээс гадуур үйл ажиллагаа явуулдаг үйлчилгээний хугацаа, эрх мэдэл, ёсны шаардлага хангасан тэмдэг
хэрэгжүүлсэн RwaControlPolicy нь дараах талбайдыг эзэлдэг:
{
"controller_accounts": [],
"controller_roles": [],
"freeze_enabled": true,
"hold_enabled": true,
"force_transfer_enabled": false,
"redeem_enabled": true
}Хянагч данс болон үүргүүд зөвхөн харгалзах Boolean тугаар идэвхжүүлсэн үйлдлүүдийг хийж чадна. Одоогийн хяналтын payload нь хянагчийн таних мэдээлэл болон үйлдлийн тугуудыг агуулна. Шилжүүлгийн allow-list болон дотроо давхарласан transfers дүрмүүд энэ payload-д хамаарахгүй.
Судалгаа, үйл явдал, APIs
Бүртгэгдсэн RWA багцуудыг жагсаахдаа FindRwas-г ашиглана. Шууд шинэчлэлт хэрэгтэй хэрэглээ нь үүсгэсэн, эзэмшигч өөрчилсөн, хуваасан, нэгтгэсэн, эргэлтээс хассан, царцаасан, царцаалтыг цуцалсан, барьцаалсан, барьцааг чөлөөлсөн, албадан шилжүүлсэн, хяналтыг өөрчилсөн болон метадатагийн 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)Хэрэв жагсаалт хол байгаа бол RWA заавар суурьшил, хайлтыг бусад Torii APIs дамжуулан дэмжих боломжтой боловч сонголттой 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)Хөрөнгийн төлбөрийг хүлээн авах
RWA хэсгээр төлбөрийн тоог primary_reference болон метрийн өгөгдлийг хадгалах замаар фактураар танилцуулна. бүртгэл хийсний дараа дамжуулалт, нөхөн төлбөр авахын тулд үүсгэсэн 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.