mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-08 13:55:50 +00:00
- Updates MPT Concept docs with metadata schema - Updates issue-mpt-with-metdata example code with new schema changes.
83 lines
2.7 KiB
Python
83 lines
2.7 KiB
Python
import json
|
|
from xrpl.utils import str_to_hex, hex_to_str
|
|
from xrpl.clients import JsonRpcClient
|
|
from xrpl.wallet import generate_faucet_wallet
|
|
from xrpl.transaction import submit_and_wait
|
|
from xrpl.models import LedgerEntry, MPTokenIssuanceCreate, MPTokenIssuanceCreateFlag
|
|
|
|
# Set up client and get a wallet
|
|
client = JsonRpcClient("https://s.devnet.rippletest.net:51234")
|
|
print("Funding new wallet from faucet...")
|
|
wallet = generate_faucet_wallet(client, debug=True)
|
|
|
|
# Define metadata as JSON
|
|
mpt_metadata = {
|
|
"t": "TBILL",
|
|
"n": "T-Bill Yield Token",
|
|
"d": "A yield-bearing stablecoin backed by short-term U.S. Treasuries and money market instruments.",
|
|
"i": "example.org/tbill-icon.png",
|
|
"ac": "rwa",
|
|
"as": "treasury",
|
|
"in": "Example Yield Co.",
|
|
"us": [
|
|
{
|
|
"u": "exampleyield.co/tbill",
|
|
"c": "website",
|
|
"t": "Product Page"
|
|
},
|
|
{
|
|
"u": "exampleyield.co/docs",
|
|
"c": "docs",
|
|
"t": "Yield Token Docs"
|
|
}
|
|
],
|
|
"ai": {
|
|
"interest_rate": "5.00%",
|
|
"interest_type": "variable",
|
|
"yield_source": "U.S. Treasury Bills",
|
|
"maturity_date": "2045-06-30",
|
|
"cusip": "912796RX0"
|
|
}
|
|
}
|
|
|
|
# Convert JSON to a string (without excess whitespace), then string to hex
|
|
mpt_metadata_string = json.dumps(mpt_metadata, separators=(',', ':'))
|
|
mpt_metadata_hex = str_to_hex(mpt_metadata_string)
|
|
|
|
# Define the transaction, including other MPT parameters
|
|
mpt_issuance_create = MPTokenIssuanceCreate(
|
|
account=wallet.address,
|
|
asset_scale=4,
|
|
maximum_amount="50000000",
|
|
transfer_fee=0,
|
|
flags=MPTokenIssuanceCreateFlag.TF_MPT_CAN_TRANSFER |
|
|
MPTokenIssuanceCreateFlag.TF_MPT_CAN_TRADE,
|
|
mptoken_metadata=mpt_metadata_hex
|
|
)
|
|
|
|
# Prepare, sign, and submit the transaction
|
|
print("Sending MPTokenIssuanceCreate transaction...")
|
|
response = submit_and_wait(mpt_issuance_create, client, wallet, autofill=True)
|
|
print(json.dumps(response.result, indent=2))
|
|
|
|
# Check transaction results
|
|
result_code = response.result["meta"]["TransactionResult"]
|
|
if result_code != "tesSUCCESS":
|
|
print(f"Transaction failed with result code {result_code}")
|
|
exit(1)
|
|
|
|
issuance_id = response.result["meta"]["mpt_issuance_id"]
|
|
print(f"MPToken successfully created with issuance ID {issuance_id}")
|
|
|
|
# Look up MPT Issuance entry in the validated ledger
|
|
print("Confirming MPT Issuance metadata in the validated ledger.")
|
|
ledger_entry_response = client.request(LedgerEntry(
|
|
mpt_issuance=issuance_id,
|
|
ledger_index="validated"
|
|
))
|
|
|
|
# Decode the metadata
|
|
metadata_blob = ledger_entry_response.result["node"]["MPTokenMetadata"]
|
|
decoded_metadata = json.loads(hex_to_str(metadata_blob))
|
|
print("Decoded metadata:", decoded_metadata)
|