Gunakan halaman ini untuk memahami apa itu token pada rantai ini sebelum Anda membuat, mendaftarkan, atau mengindeks satu token. RPL adalah standar token Rand, baru pada chain 14. Token adalah aset native terlindung: satu entri dalam registri buku besar, dengan saldo yang disimpan sebagai catatan (note) biasa dalam pohon komitmen yang sama dengan yang digunakan RAND. Token bukan kontrak. Untuk membuat token langkah demi langkah, lihat Deploy an RPL token.
Alasannya bersifat struktural. Sebuah Call hanya menulis tanda terima, sehingga kontrak bergaya ERC-20 tidak memiliki tempat untuk menyimpan saldo, dan tabel saldo publik akan menjadikan token satu-satunya aset transparan pada rantai terlindung. RPL justru menjadikan token sebagai objek buku besar kelas satu. Chain 20 menambahkan RPL-2 (v0.6.8): sebuah program dapat menyimpan sel state publik dan vault publik, serta dapat menjadi otoritas pencetakan bagi token miliknya sendiri (di bawah); saldo yang dipegang oleh orang tetap berupa catatan.
Token adalah entri registri
TokenRegistry (crates/randprotocol-core/src/ledger/tokens.rs) adalah satu tabel yang dipakai bersama oleh setiap token, baik native maupun bridged. Registri ini sama dengan registri yang digunakan bridge untuk menetapkan indeks sebuah aset. Setiap entri memuat:
| field | aturan |
|---|---|
id | id aset, 32 byte, beralamat konten |
index | u32, nilai yang dibawa oleh kata asset pada sebuah catatan; padat, ditetapkan sesuai urutan pendaftaran mulai dari 1. Indeks 0 adalah RAND dan tidak pernah didaftarkan |
name | 1 hingga 32 byte UTF-8, spasi diperbolehkan, tidak dapat diubah |
symbol | 1 hingga 12 byte ASCII grafis (0x21..=0x7e, tanpa spasi putih), tidak dapat diubah |
decimals | 0 hingga 9, tidak dapat diubah |
authority | otoritas pencetakan, lihat di bawah |
mint_nonce | penghitung pemutaran ulang (replay) untuk otoritas Key |
total_supply | u64, aritmetika terperiksa; luapan (overflow) menyebabkan pencetakan ditolak. Sejak chain 15 nilainya dijaga di bawah 2^63 (di bawah) |
registered_at | tinggi blok saat pendaftaran |
Desimal dibatasi hingga 9 karena jumlah bertipe u64: pada 18 desimal, sebuah u64 hanya memuat 18,4 token utuh, dan 9 adalah presisi RAND sendiri. Token bridged selalu didaftarkan dengan 8 desimal, berapa pun desimal koin sumbernya.
Registri diaktifkan oleh bagian tokens dalam berkas genesis, sebagaimana bridge dan aggregation diaktifkan oleh bagiannya masing-masing. Tanpa bagian itu, setiap aksi token ditolak sebelum pemeriksaan lainnya (TokenError::Disabled). Genesis chain 20 memiliki bagian tersebut dan mencantumkan satu token, zUSD, beserta tujuh backing-nya, yang dibawa dari chain 14 melalui setiap pemotongan chain sejak itu; setiap token lain pada rantai ini hadir melalui transaksi. (Genesis chain 14 tidak mencantumkan satu pun.) Dengan gerbang ini aktif, sebuah tokens_root (akar merkle dari daun blake3("rand-token-leaf-1", bincode(TokenInfo)) menurut urutan indeks) dilebur ke dalam akar state. Domain akar ini adalah rand-state-4 pada rantai yang tidak mengaktifkan apa pun setelahnya; akar chain 20 juga memuat state faucet dan antrean bond, harga gas yang berlaku, serta akar state program, di-hash di bawah rand-state-8, dan dibungkus sekali lagi oleh himpunan validator yang diterima (Konsensus).
Rantai dengan bagian tokens juga mewajibkan setiap catatan alloc genesis membawa pembukaannya (pk, time, r), dan node menghitung ulang komitmen serta menolak berkas yang tidak cocok. Komitmen berada pada aset 0 kecuali pembukaan menyebut indeks token yang dicantumkan genesis yang sama; chain 20 memiliki dua catatan semacam itu, 10 dan 89 zUSD pada indeks 1; dan untuk setiap token yang dicantumkan, catatan genesis harus berjumlah sebesar nilai awal backing-nya yang locked. Begitu sebuah catatan memiliki kata asset yang dapat menyebut sebuah token, komitmen genesis yang tidak dibuka akan menjadi satu-satunya cara memasukkan catatan tanpa jaminan dari aset apa pun ke dalam pool tanpa diperiksa.
Id aset, indeks, dan rpl1…
Sebuah token memiliki dua nama, dan RPC memberikan keduanya.
- Id aset berukuran 32 byte, beralamat konten seperti id program. Id token native adalah
blake3("rand-rpl-asset", bincode(name, symbol, decimals, authority, initial, salt)), dengansaltberupa 32 byte yang dipilih pembuatnya daninitialadalah seluruh pencetakan awal, jika ada. Id token bridged adalahblake3("rand-rpl-asset", bincode(name, symbol, 8, salt)). Mendaftarkan id yang sudah ada akan ditolak (TokenError::AlreadyRegistered). - Indeks adalah apa yang sebenarnya dibawa oleh sebuah catatan, karena id 32 byte tidak muat dalam satu kata. Indeks adalah singkatan yang hanya bermakna pada rantai ini.
- Bentuk teks
rpl1…adalah bech32m (BIP-350) dengan bagian yang dapat dibaca manusiarpldi atas 32 byte id: 52 karakter data dan checksum 6 karakter, seluruhnya 62 karakter. Bentuk ini ditampilkan di samping id 64-hex di mana pun token disebut dan diterima di mana pun token dicari; hex tetap diterima. Penguraian bersifat ketat: checksum yang salah, prefiks yang salah, muatan yang tidak tepat 32 byte, atau huruf besar-kecil yang bercampur akan ditolak, sehingga salah ketik tidak dapat menunjuk ke token yang berbeda.
Simbol tidak unik. Seperti pada ERC-20 dan SPL, identitas sebuah token adalah id asetnya, bukan nama atau tikernya.
Nilai lama per (chain, token) yang dihitung oleh rand_bridgeAssetId dan dicetak oleh rand_getAssets pada setiap baris backing adalah pengenal yang lebih sempit untuk format wire bridge, bukan id milik token itu sendiri.
Otoritas pencetakan
| authority | siapa yang dapat menerbitkan unit | catatan |
|---|---|---|
None | tidak seorang pun, setelah pendaftaran | pasokan tetap: pencetakan awal diwajibkan dan itulah satu-satunya pasokan yang akan ada |
Key(PublicKey) | pemegang satu kunci Dilithium2 | mencetak lagi di kemudian hari dengan tanda tangan; dapat menyerahkan otoritas kepada kunci lain atau melepaskannya |
Bridge { backings } | hanya penguncian dan pelepasan oleh bridge | tidak pernah pencetakan langsung; hanya ada melalui aksi tata kelola bridge |
Program(ProgramId) | hanya Invoke dari program tersebut (RPL-2) | pada rantai dengan bagian program_state (chain 20): didaftarkan tanpa pencetakan awal, sehingga pasokannya dimulai dari nol, dan dicetak atau dibakar hanya oleh transisi yang dijamin oleh bukti program (rand token create --program <id>). Ditolak saat pendaftaran pada rantai tanpa bagian tersebut |
Sebuah RegisterToken yang menyebut Bridge ditolak (TokenError::AuthorityNotAllowed), demikian pula yang menyebut Program dengan pencetakan awal atau pada rantai tanpa program_state. Otoritas Key tepat berupa satu kunci publik Dilithium2: kunci dengan panjang byte lain ditolak (TokenError::BadAuthorityKey), dan kunci ML-KEM penerima dalam sebuah pencetakan dibatasi panjangnya dengan cara yang sama. Keduanya adalah state konsensus atau ruang blok yang dibeli dengan biaya tetap, sehingga tidak satu pun boleh berukuran sembarang.
Membuat token
Pembuatan bersifat tanpa izin. Action::RegisterToken { name, symbol, decimals, authority, initial, salt, index } dibawa oleh bundel biaya RAND biasa dan membayar BUNDLE_BASE ditambah registration_fee milik registri. Biaya pendaftaran adalah parameter genesis yang dibatasi antara 1 RAND dan 10.000 RAND, sehingga token spam selalu menelan biaya. Pada chain 20 biayanya 1 RAND, sehingga satu pendaftaran berbiaya 1,001 RAND, dan chain 20 membakar biaya tersebut, sebagaimana setiap rantai sejak chain 15: proposer hanya menyimpan dasar bundel (di bawah).
index menyebut indeks registri yang untuknya pembuat menyegel catatan awal. Jika pendaftaran lain lebih dahulu mengambil indeks itu, transaksi ditolak (TokenError::IndexMismatch) alih-alih membuat catatan terdampar; pembuat membuktikan ulang pada indeks berikutnya.
Catatan hasil pencetakan dihitung oleh rantai, bukan dipilih oleh pengirim: note_commitment(recipient.pk, MINT_FROM, amount, index, time, r). Jumlah dan pk penerima bersifat publik pada wire, sehingga penerima dapat membangun ulang catatan dari field transaksi itu sendiri meskipun amplop tersegel berisi sampah. Deposit bridge memiliki pertahanan yang sama.
Mengapa id mengikat seluruh pencetakan awal
Sebuah RegisterToken tidak ditandatangani. Pengikatan transaksi mencegah salinan yang telah dibuktikan diubah, tetapi tidak mengatur apa yang boleh disebut oleh salinan baru. Seandainya id hanya mencakup jumlah awal, pengamat pendaftaran yang tertunda dapat mengirimkan salinan dengan penerima yang berbeda, mendaftarkannya dengan id yang sama, dan mengambil seluruh pasokan token berpasokan tetap dengan melakukan commit lebih dahulu. Karena id mencakup seluruh pencetakan awal (jumlah, penerima, r, time, dan amplop), salinan yang dialihkan akan menghasilkan hash id aset yang berbeda: token lain dengan simbol yang sama, yang sudah dimungkinkan oleh simbol yang tidak unik. Yang asli tetap masuk pada indeks berikutnya dengan biaya satu kali pembuktian ulang.
Transfer menggunakan bundel yang sama dengan RAND
Sejak chain 14 setiap transaksi yang memindahkan nilai membawa tepat satu bundel, bentuk 4-masuk-4-keluar dengan aset tersembunyi yang tetap (Transaksi dan aksi). Slot 0–1 membawa aset privat, RAND atau token RPL apa pun, dan sirkuit tidak pernah mengetahui yang mana. Slot 2–3 selalu membawa RAND. Transfer aset apa pun adalah Action::None, aksi yang digunakan pembayaran RAND biasa. Tidak ada aksi transfer token dan tidak ada field publik yang menyebut token.
Apa yang dilihat pengamat pada transfer token persis sama dengan yang dipublikasikan pembayaran RAND: sebuah anchor, empat nullifier, empat komitmen, fee dalam RAND, burn_a = burn_r = burn_asset = 0, sebuah time, empat teks sandi amplop, dan bukti bundel. Sejak chain 17 (otorisasi terpisah), setiap bundel juga membawa auth_commit dan bukti otorisasi kedua yang lebih kecil, yang lagi-lagi sama untuk setiap aset. Pada chain 20, setiap amplop berukuran tepat 1,860 byte dan menyediakan ruang untuk memo terenkripsi (rand send --memo), baik memo itu dikirim maupun tidak. Pengamat tidak melihat pengirim, penerima, jumlah, aset mana yang berpindah, slot mana yang berupa dummy, maupun kembaliannya.
Dompet membelanjakan hingga dua catatan token pada slot 0–1 dan hingga dua catatan RAND pada slot 2–3 untuk biaya. Biaya selalu dalam RAND, sehingga pemegang token yang tidak memiliki RAND ditolak sebelum pembuktian. Biayanya sama dengan biaya pembayaran RAND (Biaya). Pada chain 20, itu berarti dua bukti STARK yang dibuat di mesin pengirim: otorisasi pembelanjaan (tier 10, sekitar 7 s, sekitar 1.37 MB) dan bundel (tier 14, sekitar 100 s, sekitar 1.5 MB), sekitar 2.85 MB di jaringan bila digabungkan. Masing-masing berada di bawah batas 4 MiB per satu bukti pada chain. Sebelum chain 17, transfer hanya membawa bukti bundel, sekitar 1.42 MB sebagaimana diukur pada saat itu.
Pencetakan dan otoritas
TokenMint { asset, amount, recipient, r, time, envelope, nonce, signature } mencetak lebih banyak token yang diotorisasi oleh Key. SetAuthority { asset, new, nonce, signature } menyerahkan otoritas kepada kunci lain, atau melepaskannya bila new tidak ada; setelah dilepaskan, tidak ada kunci yang dapat mencetak token itu lagi. Kedua tindakan tersebut ditolak pada token yang otoritasnya bukan Key (TokenError::NotKeyAuthority).
Otoritas menandatangani blake3("rand-rpl-mint-1" | "rand-rpl-authority-1", chain_id ‖ asset_id ‖ nonce ‖ body). nonce harus sama dengan mint_nonce milik token, yang kemudian bertambah satu, sehingga pencetakan yang telah ditandatangani tidak dapat diputar ulang pada chain ini maupun dibawa ke chain lain. body pada pencetakan mencakup digest amplop: komitmen saja tidak mencakupnya, dan tanpa digest itu pihak ketiga dapat membungkus ulang pencetakan yang disebarkan lewat gosip dengan amplop sampah lalu menghabiskan nonce.
Kedua tindakan ini menumpang pada bundel biaya RAND yang membayar BUNDLE_BASE. Dompet yang membayar biaya dan kunci yang mengotorisasi pencetakan terpisah dan dapat dimiliki oleh orang yang berbeda.
Pembakaran
Action::TokenBurn { asset, amount } menumpang pada bundel tunggal yang sama: burn_asset pada bundel harus sama dengan asset, burn_a harus sama dengan amount, dan burn_r bernilai 0. Token keluar dari pool melalui slot aset dan biaya RAND melalui slot 2–3 dari bukti yang sama. total_supply berkurang tepat sebesar amount. Token dengan otoritas Bridge ditolak di sini (TokenError::BridgedToken); token itu keluar melalui pembakaran jembatan.
Biaya
Setiap tindakan RPL dibayar dalam RAND.
| tindakan | batas bawah biaya | pada chain 20 |
|---|---|---|
transfer aset apa pun (Action::None) | BUNDLE_BASE | 0.001 RAND |
RegisterToken | BUNDLE_BASE + registration_fee | 1.001 RAND, di antaranya 1 RAND dibakar |
TokenMint | BUNDLE_BASE | 0.001 RAND |
SetAuthority | BUNDLE_BASE | 0.001 RAND |
TokenBurn | BUNDLE_BASE | 0.001 RAND |
Genesis chain 20 memiliki bagian gas, dan bagian itu hanya menetapkan harga untuk pemanggilan program dan invoke. Batas bawah ini bersifat tetap: tidak ada tindakan RPL yang membayar menurut gas atau menurut byte.
Apa yang publik dan apa yang tersembunyi
| publik | tersembunyi | |
|---|---|---|
| pendaftaran | nama, simbol, desimal, otoritas, id aset, jumlah dan penerima pencetakan awal | tidak ada; inilah cara pasokan token dapat diaudit sejak blok pertamanya |
| pencetakan lanjutan | jumlah, alamat terlindung penerima, bidang-bidang catatan baru | siapa yang membayar biaya RAND |
| transfer | tidak ada yang menunjukkan bahwa sebuah token berpindah | pengirim, penerima, jumlah, aset mana |
| pembakaran | aset dan jumlah | siapa yang memegang catatan yang dibakar |
| perubahan otoritas | kunci baru, atau bahwa otoritas dilepaskan | — |
Karena itu, total_supply selalu dapat diaudit: nilainya adalah apa yang ditambahkan oleh pendaftaran dan setiap pencetakan, dikurangi setiap pembakaran. Transfer antarpemegang tidak mengungkap apa pun, termasuk bahwa yang berpindah tangan adalah token dan bukan RAND.
Pengungkapan bekerja seperti pada RAND. Plaintext catatan memuat aset, sehingga kunci per transaksi (rand tx-key <hash>) atau kunci pandang membuka catatan token persis seperti membuka catatan RAND, dan rand_checkTransaction serta rand_getViewingNotes mengembalikan asset pada catatan yang mereka ungkapkan. Dengan kunci semacam itu, randscan menyelesaikan indeks terhadap registri dan menampilkan transfer sebagai token yang bernama; halaman publik untuk transaksi yang sama tidak menampilkan apa pun dari itu.
Token jembatan
Token dengan otoritas Bridge tetap merupakan token RPL: entri registri yang sama, transfer tersembunyi yang sama, mekanisme pembakaran yang sama. Pasokannya hanya bergerak melalui penguncian pada chain sumber (BridgeAttest) atau pelepasan (BridgeBurn). Satu token jembatan dapat memiliki banyak agunan, masing-masing berupa pasangan (chain, token) dengan desimal sumbernya sendiri, jumlah terkunci, dan batas pencetakan, dan total_supply selalu sama dengan jumlah yang dikunci oleh agunan-agunannya. Token jembatan didaftarkan, dan sebuah agunan ditambahkan, hanya dengan kuorum penjaga pasca-kuantum milik jembatan.
Pada chain 20, token pertama dalam registri adalah zUSD (“Shielded USD”), indeks 1, 8 desimal, tercantum dalam berkas genesis dengan tujuh agunan (USDT dan USDC di Ethereum, Binance Smart Chain, dan Solana, serta USDT di Tron). Token ini mempertahankan id aset yang dimilikinya pada chain 14, tempat token ini didaftarkan melalui transaksi pada tinggi 256: chain 15 sampai 20 masing-masing mencantumkannya dalam genesis dengan nama, simbol, dan salt yang sama. Chain 20 dimulai dengan 99 zUSD dalam dua catatan genesis (10 dan 89), didukung oleh 22 USDT yang dikunci di Ethereum, 22 di Binance Smart Chain, 30 di Tron, dan 25 di Solana, yang dibawa dari状態 jembatan chain 19. Chain 19 dimulai dengan 10 zUSD, didukung oleh 10 USDT di Solana; chain 18 dengan 9 USDT yang dikunci di Tron dan 1 di Solana. Total pasokannya sama dengan apa yang dikunci oleh agunan-agunannya dan bergerak bersama setiap deposit dan penebusan. Id-nya adalah rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx. Jembatan membahas agunan, unit pelepasan, batas pencetakan, jeda, dan tanda tangan bersama.
zUSD adalah sebuah keranjang, bukan tujuh klaim yang terpisah. Agunan-agunannya dikumpulkan pada nilai nominal, sehingga pemegang menanggung risiko setiap agunan yang tercantum, bukan risiko koin yang ia setorkan: agunan yang telah kehilangan patokan nilainya dapat disetor pada nilai par dan zUSD dibakar untuk menarik agunan yang sehat, hingga agunan yang sehat itu terkuras. Yang membatasi kerugian adalah jendela pencetakan bergulir (pada chain 20, 4,000 zUSD untuk seluruh agunan per 24 jam, di samping 100,000 per agunan) dan kustodi yang benar-benar terkunci. Jendela itu membatasi lajunya dan memberi waktu untuk menjeda pencetakan. Jendela itu tidak membatasi totalnya. Sebuah agunan hanya dicantumkan dengan kuorum penjaga pasca-kuantum, dan tidak ketika pencetakan sedang dijeda.
Biaya jembatan, dalam zUSD (chain 20). Genesis chain 20 menetapkan bridge.fees: 10 bps untuk deposit dan 10 bps untuk pembakaran, masing-masing dibulatkan ke bawah menjadi satu unit pelepasan penuh dari agunan (100 unit dasar untuk USDT 6 desimal), dibayarkan sebagai catatan zUSD ke alamat kas yang disebutkan genesis (v0.6.8, fullnode docs/bridge.md §25). Deposit sebesar g menambahkan dua catatan: g − fee milik penyetor dan fee milik kas; 1 USDT yang masuk menjadi 0.999 zUSD bagi penyetor. Pembakaran sebesar amount menyisakan fee sebagai catatan kas dan melepaskan amount − fee di chain sumber; para penjaga menandatangani jumlah pelepasan itu, dan rand_getBridgeBurn menyajikan amount, release_amount, dan fee. Catatan biaya diterbitkan dan didukung agunan, sehingga total_supply tetap sama dengan jumlah locked dari agunan-agunan: deposit menggerakkan keduanya sebesar g, pembakaran menurunkan keduanya sebesar amount − fee. Catatan biaya tidak membawa amplop. Setiap katanya bersifat publik (jumlah dari transaksi dan tarif genesis, aset dan time, blinding yang diturunkan dari digest attestation atau id transaksi pembakaran, pemilik dari genesis), sehingga dompet kas membangunnya kembali dari bidang publik (Catatan). BRIDGE_BURN_FEE, yaitu 0.01 RAND yang dibayar pembakaran kepada proposer, tidak berubah. Chain 14 sampai 19 tidak memiliki biaya jembatan di Rand.
Registri sejak chain 15
Sejak chain 15, genesis mengaktifkan tiga aturan registri yang tidak dimiliki chain 14, dan genesis chain 20 menetapkan ketiga nilai yang sama. Masing-masing terikat pada hash genesis dan akar token.
| bidang genesis | chain 20 | efek |
|---|---|---|
tokens.max_tokens | 4096 | registri tidak pernah menampung lebih dari ini; pada batas tersebut RegisterToken dan RegisterBridgedToken ditolak dengan RegistryFull. ListBacking tidak menambah token dan tidak terpengaruh |
tokens.burn_registration_fee | true | registration_fee dari sebuah pendaftaran dimusnahkan, bukan dibayarkan kepada proposer, yang tetap menerima fee − registration_fee. rand_getSupply menghitungnya dalam burned dan dalam registration_fees_burned (Pasokan) |
tokens.bound_note_value | true | TokenMint, mint awal, atau deposit bridge senilai 2^63 atau lebih ditolak dengan AmountTooLarge, dan yang akan membawa total_supply sebuah token mencapai 2^63 atau melampauinya ditolak dengan SupplyTooLarge |
Batas nilai note ada karena sirkuit bundle memeriksa rentang setiap jumlah hingga 63 bit: note senilai 2^63 atau lebih dapat di-commit tetapi tidak akan pernah dapat dibelanjakan, sementara tetap dihitung dalam pasokan token. Setiap node juga menolak jumlah semacam itu saat admisi pada setiap chain, apa pun isi genesis-nya.
RPC dan CLI
| metode | parameter | hasil |
|---|---|---|
rand_getTokens | [from_index, limit], opsional, bawaan 0 dan 1000, dibatasi hingga 1000 | { enabled, registration_fee, next_index, max_tokens, burn_registration_fee, bound_note_value, tokens }, urut naik berdasarkan indeks, dibaca per rentang mulai dari from_index |
rand_getToken | [token]: indeks, id 64-hex, atau rpl1… | satu baris token, atau null; id yang salah format menghasilkan -32602 |
rand_getTokenSupply | [token], bentuk yang sama | { total_supply, backings }; backings kosong untuk token native |
Setiap jumlah dalam hasil ini (total_supply, registration_fee, locked, mint_cap_per_day, dan minted_today milik sebuah backing) berupa string desimal, karena angka JSON tidak eksak melewati 2⁵³. index, next_index, mint_day, dan max_tokens adalah bilangan bulat biasa (max_tokens bernilai null pada chain tanpa batas); burn_registration_fee dan bound_note_value adalah boolean. Kolom authority pada sebuah baris berbentuk {"kind":"none"}, {"kind":"key","key","address"}, {"kind":"bridge","backings":[…]}, atau {"kind":"program","program"}. Rincian lengkap ada di JSON-RPC.
Privasi. rand_getTokens memiliki biaya yang sama untuk token mana pun yang dimaksud pemanggil. rand_getToken dan rand_getTokenSupply memberi tahu node token mana yang diminati pemanggil: tidak masalah untuk explorer, tetapi keliru untuk wallet yang akan mengirim. Karena itu wallet menyelesaikan setiap --asset dari seluruh daftar, dan indeks numerik sama sekali tidak pernah sampai ke node.
| perintah | fungsinya |
|---|---|
rand token create | mendaftarkan token pada indeks berikutnya di registri, dengan pasokan tetap atau berotorisasi Key |
rand token mint | mencetak lebih banyak token berotorisasi Key, ditandatangani oleh kunci otoritasnya |
rand token set-authority | menyerahkan otoritas kepada kunci lain (--new-key) atau melepaskannya (--renounce) |
rand token burn <ASSET> <AMOUNT> | memusnahkan unit yang dipegang wallet ini |
rand token info <ASSET> | baris lengkap satu token |
rand token list | satu halaman registri |
rand send <TO> <AMOUNT> --asset <INDEX|rpl1…|hex> | mengirim token dalam satu bundle; tanpa --asset perintah ini mengirim RAND. Perintah ini menampilkan sidik jari penerima dan jumlahnya, lalu menanyakan send? [y/N] sebelum membuktikan (--yes melewati pertanyaan tersebut) |
rand asset-balance [INDEX] | saldo wallet ini untuk satu aset, atau satu baris per aset |
rand token register-bridged, rand token list-backing | dua aksi pendaftaran milik bridge; masing-masing memerlukan berkas kuorum guardian PQ |
Sejak v0.5.10, jumlah pada rand send --asset, rand token mint, dan rand token burn dinyatakan dalam unit tampilan token, dibaca menurut decimals pada baris registrinya sendiri: 1.5 dari token 6 desimal adalah 1.500.000 unit terkecilnya, dan digit pecahan yang melebihi jumlah desimal token ditolak. Konfirmasi send menampilkan keduanya (1.500000 USDX (1500000 units)). --fixed-supply dan --initial pada rand token create tetap menerima unit terkecil utuh, demikian pula rand bridge-burn, dan rand asset-balance menampilkan unit terkecil. Di chain, jumlahnya selalu berupa bilangan bulat unit terkecil. Flag dan nilai bawaan ada di Baris perintah.
Perbedaan dari ERC-20 dan SPL
| ERC-20 / SPL | RPL | |
|---|---|---|
| saldo | mapping atau akun publik | note shielded; hanya pemegang kunci yang dapat melihatnya |
| event transfer | publik, dengan pengirim, penerima, dan jumlah | tidak ada; transfer tidak memublikasikan apa pun yang membedakan |
| kode per token | dimungkinkan: pajak, rebase, hook, pembekuan | tidak ada; setiap token mengikuti aturan tetap yang sama |
| kepemilikan oleh program | ya | pada chain 20 (RPL-2): vault publik milik program, diisi oleh bidang burn dari sebuah invoke dan dibayarkan sebagai note yang dihitung chain |
| jumlah | hingga 256-bit (ERC-20), 64-bit (SPL) | u64, paling banyak 9 desimal |
| penerimaan | ERC-20 tidak memerlukan penyiapan; SPL memerlukan associated token account | tanpa penyiapan; alamat shielded menerima apa pun |
| biaya transfer | eksekusi EVM atau SVM biasa | dibuktikan oleh pengirim: bundle hidden-asset bersama, dan sejak chain 17 sebuah bukti otorisasi kecil di sampingnya |
| persetujuan | approve / transferFrom | belum ada |
| metadata | dapat diubah pada sebagian implementasi | di chain dan tidak dapat diubah |
| pembekuan, daftar hitam | dimungkinkan pada sebagian token | di luar cakupan secara desain |
Batasan yang diketahui
- Tidak ada allowance.
approvedantransferFromdirancang dalam spesifikasi RPL sebagai akun allowance yang dialokasikan khusus dan belum dibangun. - Kepemilikan sebuah program bersifat publik. Pada chain 20 sebuah program dapat memegang token di vault-nya dan mencetak token miliknya sendiri (RPL-2), tetapi saldo vault bersifat publik, seperti pasokan sebuah token; hanya note yang privat. Chain sebelum 20 sama sekali tidak memiliki state program.
- Biaya hanya dalam RAND. Sebuah token tidak dapat membayar biayanya sendiri; wallet yang hanya berisi token tidak dapat bergerak.
- Jumlah
u64dan paling banyak 9 desimal. Koin sumber 18 desimal direpresentasikan dengan presisi lebih rendah; bridge menyelesaikannya dengan 8 desimal dan satu unit rilis per backing. - Setiap transfer dibuktikan. Sekitar 100 s dan beberapa GB memori pada mesin pengirim; tidak ada jalur yang lebih murah untuk token dibandingkan RAND.
- Tidak ada pembekuan, daftar hitam, atau jeda pada token native, berdasarkan keputusan. Jeda mint pada bridge hanya berlaku untuk mint token bridged.
- Pencarian per token membocorkan minat.
rand_getToken,rand_getTokenSupply, dan/tokens/:idmilik explorer memberi tahu server token mana yang ditanyakan.