Skip to content

Байгаль орчин үеийн хөрөнгө

Үнэн ертөнцөд хөрөнгө (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-ийн текст хэлбэр нь:

text
<generated-hash>$<domain>

Жишээ нь:

text
0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef$commodities.universal

Хэрэглэгчид primary_reference эсвэл metadata-д аж ахуйн тодорхойлолтыг хадгалах, дараа нь RwaEvent::Created, FindRwas, /v1/rwas, эсвэл гүйлгээний үүрэг гүйцэтгээс хойш тогтоосон хайгуулын замаар үүссэн RwaId-ийг олж харах ёстой.

Амьдралын мөчлөл

Нийтлэг RWA ажлын урсгал нь:

Үйл ажиллагааҮйл ажиллагааны хэрэгжилт
RegisterRwaID гарын үсэг үүсгэн бүтээх; гүйлгээний эрх баригч нь 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 нь дараах талбайдыг эзэлдэг:

json
{
  "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 хуримтлагыг бүртгэж байгаа эсэхийг шалгана уу:

bash
curl -fsS 'https://taira.sora.org/v1/rwas?limit=5' \
  | jq '{total, rwa_ids: [.items[].id]}'

Амьдрал Taira OpenAPI баримтаар илрүүлсэн RWA замыг жагсаарай:

bash
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 програм хангамжийн чиглэлийг ашиглах боломжтой гэж асууж байна:

python
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 нь гүйлгээ батлагдсанаас хойш бий болно.

python
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 эсвэл метадандоо тохируулах шаардлагатай үед:

python
page = client.list_rwas_typed(limit=20, offset=0)

for lot in page.items:
    print(lot.id)

Эксплорер-ийн үйл ажиллагааг хангасан цэгүүд нь ч илүү баялаг проекцийг буцааж болно:

python
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-ийн хяналтын тоног төхөөрөмжөөр тохируулж байна.

python
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-г илгээнэ үү:

python
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)

Хяналт тавих, хяналтын метабараа нэмнэ

Хяналт, метадэтгэг нь тусдаа байдаг. Хяналтын захиргааны бодлогын хяналтыг ашиглаж, хэрэгслийн болон аудиторын үзүүлэлтэд шаардлагатай баримтуудын метадэтгийг:

python
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 нь идэвхтэй, гарын үсэг зурагч нь эзэмшигч эсвэл хянагч байх ёстой.

python
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 нь идэвхтэй байх ёстой.

python
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-г илгээнэ үү:

python
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-ийг ашиглана.

python
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 хэсгийг ашигла:

python
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)

Сүлжээнээс гадуурх тооцоо хийгдсэний дараа төлөөлж буй хэмжээг эргэлтээс хасна уу:

python
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-г илгээнэ үү. Сүлжээнээс гадуурх гэрчилгээ эсвэл бүртгэлийн нотолгоог метадатад хадгална:

python
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.

python
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.