دا پاڼه وکاروئ ترڅو پوه شئ چې پر دې زنځیر ټوکن څه شی دی، مخکې له دې چې یو جوړ کړئ، لیست یې کړئ یا یې انډکس کړئ. RPL د Rand د ټوکن معیار دی چې په زنځیر 14 کې نوی راغلی. ټوکن یو پټ اصلي شتمني ده: د دفتر په راجستر کې یو داخله، چې بیلانسونه یې د عادي نوټونو په توګه په هماغه د ژمنو ونه کې ساتل کېږي چې RAND یې کاروي. دا قرارداد نه دی. د ګام په ګام جوړولو لپاره، یو RPL ټوکن ځای پر ځای کړئ وګورئ.
لامل یې جوړښتي دی. یو Call یوازې رسید لیکي، نو د ERC-20 په بڼه قرارداد د بیلانس ساتلو لپاره هېڅ ځای نه درلود، او عامه بیلانس جدول به ټوکنونه پر یو پټ زنځیر یوازینۍ شفافه شتمني ګرځولې وای. د دې پر ځای RPL ټوکن د دفتر یو لومړۍ درجې شی ګرځوي. زنځیر 20 RPL-2 (v0.6.8) زیاتوي: یو پروګرام کولای شي عامه حالت خونې او عامه خزانه وساتي، او د خپل یو ټوکن د ضرب واک لرونکی کېدای شي (لاندې)؛ هغه بیلانسونه چې خلک یې لري لا هم نوټونه دي.
ټوکن د راجستر یوه داخله ده
TokenRegistry (crates/randprotocol-core/src/ledger/tokens.rs) یو جدول دی چې ټول ټوکنونه، اصلي یا پُل شوي، پکې شریک دي. دا هماغه راجستر دی چې پُل د یوې شتمنۍ انډکس له لارې یې پیدا کوي. هره داخله:
| ساحه | قاعده |
|---|---|
id | د شتمنۍ پېژندنه، 32 بایټه، د منځپانګې له مخې پته شوې |
index | u32، هغه ارزښت چې د نوټ asset کلمه یې لېږدوي؛ ګڼ، د راجسترېدو په ترتیب له 1 څخه ټاکل کېږي. انډکس 0 RAND دی او هېڅکله نه راجسترېږي |
name | له 1 تر 32 بایټه UTF-8، تشې ځایونه اجازه لري، نه بدلېدونکی |
symbol | له 1 تر 12 ASCII ګرافیکي بایټه (0x21..=0x7e، بې تش ځایه)، نه بدلېدونکی |
decimals | له 0 تر 9، نه بدلېدونکی |
authority | د ضرب واک، لاندې |
mint_nonce | د Key واک د بیا لېږلو شمېرونکی |
total_supply | u64، کنټرول شوې حساب؛ لوړ اوښتل ضرب ردوي. له زنځیر 15 راهیسې له 2^63 څخه ښکته ساتل کېږي (لاندې) |
registered_at | د راجسترېدو لوړوالی |
لسیز ځایونه په 9 دریږي ځکه چې مقدارونه u64 دي: په 18 لسیزو ځایونو یو u64 یوازې 18.4 بشپړ ټوکنونه ساتي، او 9 د RAND خپل دقت دی. یو پُل شوی ټوکن تل په 8 لسیزو ځایونو راجسترېږي، که د سرچینې سکې یې هر څومره کاروي.
راجستر د پیدایښت په فایل کې د tokens برخې په واسطه فعالېږي، لکه څنګه چې bridge او aggregation د خپلو برخو په واسطه. پرته له هغې د ټوکن هره کړنه له هر بل کنټرول مخکې ردېږي (TokenError::Disabled). د زنځیر 20 پیدایښت دا برخه لري او یو ټوکن لیست کوي، zUSD، له خپلو اوو ملاتړونو سره، چې له زنځیر 14 راهیسې له هرې پرې کولو سره راوړل شوی؛ پر زنځیر هر بل ټوکن د راکړې ورکړې له لارې راځي. (د زنځیر 14 پیدایښت هېڅ نه وو لیست کړي.) کله چې دروازه پرانیستې وي، یو tokens_root (د blake3("rand-token-leaf-1", bincode(TokenInfo)) پاڼو merkle ریښه د انډکس په ترتیب) د حالت په ریښه کې ننوځي. د ریښې ډومېن پر هغه زنځیر چې وروسته پکې هېڅ نه وي فعال شوي rand-state-4 دی؛ د زنځیر 20 ریښه د faucet او د ضمانت د کتار حالت، ژوندي ګاز بیې او د پروګرام د حالت ریښه هم لري، د rand-state-8 لاندې هش کېږي، او یو ځل بیا د منل شویو validators د ټولګې په واسطه پوښل کېږي (اجماع).
هغه زنځیر چې tokens برخه لري دا هم غواړي چې د پیدایښت هر alloc نوټ خپل پرانیستل (pk، time، r) ولري، او نوډ ژمنه بیا محاسبه کوي او هغه فایل ردوي چې سره سمون ونه لري. ژمنه په شتمنۍ 0 کې ده مګر دا چې پرانیستل د هغه ټوکن انډکس ونوموي چې هماغه پیدایښت یې لیست کوي — زنځیر 20 دوه داسې نوټونه لري، 10 او 89 zUSD په انډکس 1 کې — او د هر لیست شوي ټوکن لپاره د پیدایښت نوټونه باید هغه مقدار ته ورسېږي چې ملاتړونه یې پرې په locked کې پیل کوي. کله چې نوټ داسې asset کلمه ولري چې ټوکن نومولای شي، یوه نه پرانیستل شوې د پیدایښت ژمنه به یوازینۍ لار وي چې د هرې شتمنۍ بې ملاتړه نوټ بې کنټروله حوض ته ننباسي.
د شتمنۍ پېژندنه، انډکس او rpl1…
ټوکن دوه نومونه لري، او RPC دواړه ورکوي.
- د شتمنۍ پېژندنه 32 بایټه ده، د پروګرام د پېژندنې په څېر د منځپانګې له مخې پته شوې. د اصلي ټوکن پېژندنه
blake3("rand-rpl-asset", bincode(name, symbol, decimals, authority, initial, salt))ده، چېرې چېsaltهغه 32 بایټه دي چې جوړونکی یې غوره کوي اوinitialبشپړ لومړنی ضرب دی، که وي. د پُل شوي ټوکن پېژندنهblake3("rand-rpl-asset", bincode(name, symbol, 8, salt))ده. د داسې پېژندنې راجسترول چې لا شته وي ردېږي (TokenError::AlreadyRegistered). - انډکس هغه څه دی چې نوټ یې په رښتیا لېږدوي، ځکه چې 32 بایټیزه پېژندنه په یوه کلمه کې نه ځایېږي. دا یو لنډلیک دی چې یوازې پر دې زنځیر مانا لري.
- متني بڼه
rpl1…د 32 پېژندنې بایټونو پر سر د انسان لپاره د لوستلو وړ برخېrplسره bech32m (BIP-350) ده: 52 ډېټا توري او 6 توري چکسم، ټول 62 توري. هر چېرې چې ټوکن نومول کېږي د 64-hex پېژندنې تر څنګ ښودل کېږي او هر چېرې چې ټوکن لټول کېږي منل کېږي؛ hex لا هم منل کېږي. تجزیه سخته ده: غلط چکسم، غلط مختاړی، داسې محتوا چې دقیقاً 32 بایټه نه وي، یا ګډ لوی او واړه توري ردېږي، نو یوه لیکنیزه تېروتنه بل ټوکن ته نه شي رسېدای.
سمبولونه یوازیني نه دي. لکه د ERC-20 او SPL په څېر، د ټوکن هویت د هغه د شتمنۍ پېژندنه ده، هېڅکله یې نوم یا ټیکر نه.
پخوانی د هر (chain, token) ارزښت چې rand_bridgeAssetId یې محاسبه کوي او rand_getAssets یې د ملاتړ په هر قطار کې چاپوي، د پُل د تار بڼې لپاره یو تنګ پېژندونکی دی، نه د ټوکن خپله پېژندنه.
د ضرب واکونه
| واک | څوک واحدونه صادرولای شي | یادښتونه |
|---|---|---|
None | هېڅوک، له راجسترېدو وروسته | ثابت عرضه: لومړنی ضرب اړین دی او هغه ټول دي چې هېڅکله به وي |
Key(PublicKey) | د یوې Dilithium2 کیلي لرونکی | وروسته د لاسلیک په واسطه بیا ضرب کوي؛ کولای شي واک بلې کیلي ته وسپاري یا یې پرېږدي |
Bridge { backings } | یوازې د پُل بندول او خوشې کول | هېڅکله مستقیم ضرب نه؛ یوازې د پُل د حکومتولۍ د کړنو له لارې شتون لري |
Program(ProgramId) | یوازې د هغه پروګرام Invokeونه (RPL-2) | پر هغه زنځیر چې program_state برخه لري (زنځیر 20): پرته له لومړني ضرب راجسترېږي، نو عرضه یې له صفر پیلېږي، او یوازې د هغو بدلونونو په واسطه ضرب یا سوځول کېږي چې د پروګرام ثبوت یې تضمین کوي (rand token create --program <id>). پر هغه زنځیر چې دا برخه نه لري په راجسترېدو کې ردېږي |
هغه RegisterToken چې Bridge نوموي ردېږي (TokenError::AuthorityNotAllowed)، لکه څنګه چې هغه چې Program له لومړني ضرب سره یا پر داسې زنځیر چې program_state نه لري نوموي. د Key واک دقیقاً یوه Dilithium2 عامه کیلي ده: د هر بل بایټ اوږدوالي کیلي ردېږي (TokenError::BadAuthorityKey)، او په ضرب کې د ترلاسه کوونکي ML-KEM کیلي هم په همدې ډول خپل اوږدوالي ته پابنده ده. دواړه د اجماع حالت یا د بلاک ځای دي چې په ثابت فیس اخیستل کېږي، نو هېڅ یو یې په خپل سري ډول لوی کېدای نه شي.
د ټوکن جوړول
جوړول اجازې ته اړتیا نه لري. Action::RegisterToken { name, symbol, decimals, authority, initial, salt, index } پر یوه عادي RAND د فیس بنډل سپرېږي او BUNDLE_BASE جمع د راجستر registration_fee ورکوي. د راجسترېدو فیس د پیدایښت یو پارامتر دی چې د 1 RAND او 10,000 RAND ترمنځ محدود دی، نو یو سپام ټوکن تل یو لګښت لري. پر زنځیر 20 دا 1 RAND دی، نو یو راجسترېدل 1.001 RAND لګښت لري، او زنځیر 20 یې سوځوي، لکه څنګه چې له 15 راهیسې هر زنځیر کړي: وړاندیزوونکی یوازې د بنډل بنسټ ساتي (لاندې).
index د راجستر هغه انډکس نوموي چې جوړونکي لومړنی نوټ ورته مهر کړی. که بل راجسترېدل هغه انډکس لومړی ونیسي، راکړه ورکړه ردېږي (TokenError::IndexMismatch) نه دا چې نوټ بې ځایه پاتې شي؛ جوړونکی په راتلونکي انډکس کې بیا ثبوت کوي.
ضرب شوی نوټ د زنځیر په واسطه محاسبه کېږي، نه د سپارونکي په واسطه غوره کېږي: note_commitment(recipient.pk, MINT_FROM, amount, index, time, r). مقدار او د ترلاسه کوونکي pk پر تار عامه دي، نو ترلاسه کوونکی کولای شي نوټ د راکړې ورکړې له خپلو ساحو بیا جوړ کړي، که مهر شوی لفافه بې مانا هم وي. د پُل زېرمه هماغه دفاع لري.
ولې پېژندنه ټول لومړنی ضرب تړي
یو RegisterToken لاسلیک شوی نه دی. د راکړې ورکړې تړون د یوې ثابت شوې کاپي له بدلون مخه نیسي، خو د دې په اړه څه نه وايي چې یوه نوې کاپي څه نومولای شي. که پېژندنې یوازې لومړنی مقدار پوښلی وای، د یوه انتظار کې راجسترېدو یو کتونکی کولای شو له بل ترلاسه کوونکي سره یوه کاپي وسپاري، هغه د هماغې پېژندنې لاندې راجستر کړي، او د ثابتې عرضې د ټوکن ټوله عرضه د لومړي ژمنې په واسطه واخلي. ځکه چې پېژندنه ټول لومړنی ضرب (مقدار، ترلاسه کوونکی، r، time او لفافه) پوښي، یوه بل لور ته اړول شوې کاپي یوې بلې شتمنۍ پېژندنې ته هش کېږي: د هماغه سمبول سره بل ټوکن، چې یو نایوازینی سمبول یې لا دمخه اجازه ورکوي. اصلي یې لا هم د یوه بیا ثبوت په لګښت په راتلونکي انډکس کې ځای نیسي.
لېږدونې د RAND په څېر هماغه بنډل دي
له زنځیر 14 راهیسې د ارزښت لېږدوونکې هره راکړه ورکړه دقیقاً یو بنډل لري، ثابته 4-ننوتل-4-وتل د پټې شتمنۍ بڼه (راکړې ورکړې او کړنې). خونې 0–1 یوه پټه شتمني لېږدوي، RAND یا هر RPL ټوکن، او سرکټ هېڅکله نه پوهېږي چې کومه. خونې 2–3 تل RAND لېږدوي. د هرې شتمنۍ لېږد Action::None دی، هماغه کړنه چې یوه ساده RAND تادیه یې کاروي. د ټوکن د لېږد کړنه نشته او هېڅ عامه ساحه نشته چې ټوکن ونوموي.
څه چې د ټوکن د لېږد کتونکی ویني، دقیقاً هغه دي چې د RAND یوه تادیه یې خپروي: یو لنګر، څلور باطلوونکي، څلور ژمنې، د RAND fee، burn_a = burn_r = burn_asset = 0، یو time، د پوښ څلور کوډ شوي متنونه او د بنډل ثبوت. له 17م زنځیر (جلا واکمنول) راهیسې هر بنډل یو auth_commit او دویم، کوچنی د واکمنولو ثبوت هم لېږدوي، چې بیا هم د هرې شتمنۍ لپاره یو شان دی. په 20م زنځیر کې هر پوښ دقیقاً 1,860 بایټه دی او د یوې کوډ شوې یادداشت (rand send --memo) لپاره ځای لري، که یادداشت ولېږل شي او که نه. کتونکی لېږونکی، ترلاسه کوونکی، مقدار، دا چې کومه شتمني خوځېدلې، کوم ځایونه ډمي وو، او پاتې بدل نه ویني.
والټ په 0–1 ځایونو کې د ټوکن تر دوو نوټونو پورې او د فیس لپاره په 2–3 ځایونو کې د RAND تر دوو نوټونو پورې لګوي. فیس تل RAND دی، نو هغه څوک چې ټوکن لري خو RAND نه لري، د ثبوت جوړولو مخکې رد کېږي. لګښت د RAND د یوې تادیې سره یو شان دی (فیسونه). په 20م زنځیر کې دا د لېږونکي په ماشین جوړ شوي دوه STARK ثبوتونه دي: د لګښت واکمنول (tier 10، شاوخوا 7 s، شاوخوا 1.37 MB) او بنډل (tier 14، شاوخوا 100 s، شاوخوا 1.5 MB)، چې په شبکه کې ټول شاوخوا 2.85 MB کېږي. هر یو د یوه ثبوت لپاره د زنځیر له 4 MiB حد څخه کم دی. له 17م زنځیر مخکې یو لېږد یوازې د بنډل ثبوت لېږداوه، چې هغه وخت شاوخوا 1.42 MB اندازه شوی و.
ضربول او واک
TokenMint { asset, amount, recipient, r, time, envelope, nonce, signature } د Key په واک د یوه ټوکن نور مقدار ضربوي. SetAuthority { asset, new, nonce, signature } واک بلې کیلي ته سپاري، یا یې کله چې new نه وي پرېږدي؛ له پرېښودلو وروسته هېڅ کیلي بیا هېڅکله دا ټوکن نه شي ضربولی. په هغه ټوکن چې واک یې Key نه وي، هر یو عمل ردېږي (TokenError::NotKeyAuthority).
واک blake3("rand-rpl-mint-1" | "rand-rpl-authority-1", chain_id ‖ asset_id ‖ nonce ‖ body) لاسلیکوي. nonce باید د ټوکن له mint_nonce سره برابر وي، چې بیا یو زیاتېږي، نو یو لاسلیک شوی ضرب نه په دې زنځیر بیا تکرارېدای شي او نه بل زنځیر ته وړل کېدای شي. د ضرب body د پوښ ډایجسټ لري: یوازې ژمنه یې نه پوښي، او له ډایجسټ پرته یو دریم اړخ کولای شي یو خپور شوی ضرب د بېګټې پوښ سره بیا ونغاړي او nonce مصرف کړي.
دواړه عملونه د RAND فیس پر یوه بنډل سپاره دي چې BUNDLE_BASE ورکوي. هغه والټ چې فیس ورکوي او هغه کیلي چې ضرب واکمنوي جلا دي او کېدای شي د بېلابېلو کسانو وي.
سوځول
Action::TokenBurn { asset, amount } پر همغه یوازیني بنډل سپور دی: د بنډل burn_asset باید له asset سره برابر وي، burn_a باید له amount سره برابر وي، او burn_r صفر دی. ټوکن د شتمنۍ له ځایونو او د RAND فیس د همغه ثبوت له 2–3 ځایونو څخه حوض پرېږدي. total_supply دقیقاً په amount کمېږي. د Bridge واک لرونکی ټوکن دلته ردېږي (TokenError::BridgedToken)؛ هغه د پل د سوځولو له لارې وځي.
فیسونه
هر RPL عمل په RAND ورکړه کوي.
| عمل | د فیس لږ تر لږه حد | په 20م زنځیر کې |
|---|---|---|
د هرې شتمنۍ لېږد (Action::None) | BUNDLE_BASE | 0.001 RAND |
RegisterToken | BUNDLE_BASE + registration_fee | 1.001 RAND، چې 1 RAND یې سوځول کېږي |
TokenMint | BUNDLE_BASE | 0.001 RAND |
SetAuthority | BUNDLE_BASE | 0.001 RAND |
TokenBurn | BUNDLE_BASE | 0.001 RAND |
د 20م زنځیر جنسیس یوه gas برخه لري، او هغه یوازې د پروګرامونو غوښتنې او invoke ګانې بیه کوي. دا لږترلږه حدونه ثابت دي: هېڅ RPL عمل د ګاز یا بایټ له مخې ورکړه نه کوي.
څه عامه دي او څه پټ
| عامه | پټ | |
|---|---|---|
| ثبتول | نوم، سمبول، اعشاریه، واک، د شتمنۍ id، د لومړني ضرب مقدار او ترلاسه کوونکی | هېڅ؛ همدا لار ده چې د ټوکن عرضه له لومړي بلاک څخه د پلټنې وړ ده |
| بل ضرب | مقدار، د ترلاسه کوونکي پټه پته، د نوي نوټ ساحې | چا د RAND فیس ورکړ |
| لېږد | هېڅ داسې څه نه چې ووایي کوم ټوکن خوځېدلی دی | لېږونکی، ترلاسه کوونکی، مقدار، کومه شتمني |
| سوځول | شتمني او مقدار | چا سوځول شوي نوټونه درلودل |
| د واک بدلون | نوې کیلي، یا دا چې واک پرېښودل شو | — |
له دې امله total_supply تل د پلټنې وړ دی: هغه څه دي چې ثبتولو او هر ضرب زیات کړي، منفي هر سوځول. د لرونکو ترمنځ لېږد هېڅ نه څرګندوي، حتی دا هم نه چې د RAND پر ځای یو ټوکن لاس په لاس شوی دی.
افشا کول همداسې کار کوي لکه د RAND لپاره. د نوټ ساده متن شتمني لېږدوي، نو د هرې معاملې کیلي (rand tx-key <hash>) یا د لیدلو کیلي د ټوکن نوټ دقیقاً هماغسې پرانیزي لکه د RAND نوټ، او rand_checkTransaction او rand_getViewingNotes په هغه نوټ کې چې افشا کوي asset بېرته ورکوي. د داسې کیلي په درلودلو سره، randscan شاخص د راجستر په وړاندې حل کوي او لېږد د نوم لرونکي ټوکن په توګه ښيي؛ د همغې معاملې عامه پاڼه له دې هېڅ نه ښيي.
پل شوي ټوکنونه
د Bridge واک لرونکی ټوکن لا هم RPL ټوکن دی: همغه د راجستر ننوتنه، همغه پټ لېږد، همغه د سوځولو میکانیزم. عرضه یې یوازې د سرچینې په زنځیر د تړلو (BridgeAttest) یا خوشې کولو (BridgeBurn) له لارې بدلېږي. یو پل شوی ټوکن کولای شي ډېر ملاتړونه ولري، هر یو د (chain, token) جوړه چې خپل د سرچینې اعشاریه، تړل شوی مقدار او د ضرب حد لري، او total_supply تل د هغه څه له مجموعې سره برابر دی چې ملاتړونو یې تړلي دي. پل شوی ټوکن ثبتېږي، او ملاتړ ورزیاتېږي، یوازې د پل د پوسټکوانټم ساتونکو د نصاب لاندې.
په 20م زنځیر کې د راجستر لومړی ټوکن zUSD (“Shielded USD”) دی، شاخص 1، 8 اعشاریه، چې په جنسیس دوتنه کې د اوو ملاتړونو سره لېست شوی (USDT او USDC په Ethereum، Binance Smart Chain او Solana، او USDT په Tron). دا هغه د شتمنۍ id ساتي چې په 14م زنځیر کې یې درلود، چېرې چې په 256 لوړوالي کې د معاملې له لارې ثبت شوی و: له 15م تر 20م زنځیر پورې هر یو یې په جنسیس کې د همغه نوم، سمبول او مالګې (salt) سره لېست کوي. 20م زنځیر یې په دوو جنسیس نوټونو (10 او 89) کې د 99 zUSD سره پیل کړ، چې ملاتړ یې په Ethereum کې 22 تړل شوي USDT، په Binance Smart Chain کې 22، په Tron کې 30 او په Solana کې 25 دي، چې د 19م زنځیر د پل له حالت څخه راوړل شوي. 19م زنځیر د 10 zUSD سره پیل شو، چې ملاتړ یې په Solana کې 10 USDT و؛ 18م زنځیر په Tron کې د 9 تړل شوو USDT او په Solana کې د 1 سره. ټوله عرضه یې د هغه څه سره برابره ده چې ملاتړونه یې تړلي ساتي او د هرې زېرمې او بېرته اخیستلو سره بدلېږي. id یې rpl1xtj6k2x8strx8c2d5fjs50ltztck5ykms4ve7nmzmstf6fhn0v0spelqtx دی. پل ملاتړونه، د خوشې کولو واحدونه، د ضرب حدونه، ځنډول او ګډ لاسلیک پوښي.
zUSD یوه ټوکرۍ ده، نه اووه جلا ادعاوې. ملاتړونه یې په ظاهري ارزښت سره یوځای شوي دي، نو لرونکی د هر لېست شوي ملاتړ خطر په غاړه لري، نه یوازې د هغې سکې چې ده زېرمه کړې ده: هغه ملاتړ چې خپل ثابت نرخ یې له لاسه ورکړی، کېدای شي په برابر ارزښت زېرمه شي او zUSD د یوه سالم ملاتړ په لور وسوځول شي، تر هغه چې سالم ملاتړونه تش شي. هغه څه چې زیان محدودوي، د ضرب ښوییدونکې کړکۍ ده (په 20م زنځیر کې، په ټولو ملاتړونو کې په هرو 24 ساعتونو کې 4,000 zUSD، سربېره پر 100,000 د هر ملاتړ لپاره) او هغه ساتنه چې په رښتیا تړل شوې ده. کړکۍ کچه محدودوي او د ضربونو د ځنډولو لپاره وخت ورکوي. ټول مقدار نه محدودوي. ملاتړ یوازې د پوسټکوانټم ساتونکو د نصاب لاندې لېست کېږي، او نه هغه وخت چې ضربونه ځنډول شوي وي.
د پل فیسونه، په zUSD (20م زنځیر). د 20م زنځیر جنسیس bridge.fees ټاکي: په زېرمه 10 bps او په سوځولو 10 bps، هر یو د ملاتړ تر بشپړ خوشې کولو واحد پورې ښکته ګرد شوی (د 6-اعشاریه USDT لپاره 100 بنسټیز واحدونه)، چې د zUSD د نوټ په توګه هغې خزانې پتې ته ورکول کېږي چې جنسیس یې نوموي (v0.6.8، fullnode docs/bridge.md §25). د g زېرمه دوه نوټونه زیاتوي: د زېرمه کوونکي g − fee او د خزانې fee؛ 1 USDT ننوتل زېرمه کوونکي ته 0.999 zUSD دي. د amount سوځول fee د خزانې د نوټ په توګه ساتي او په سرچینې زنځیر amount − fee خوشې کوي؛ ساتونکي همدا د خوشې کولو مقدار لاسلیکوي، او rand_getBridgeBurn، amount، release_amount او fee وړاندې کوي. د فیس نوټ صادر شوی او ملاتړ شوی دی، نو total_supply لا هم د ملاتړونو د locked له مجموعې سره برابر دی: زېرمه دواړه په g بدلوي، سوځول دواړه په amount − fee کموي. د فیس نوټ هېڅ پوښ نه لري. هره کلمه یې عامه ده (مقدار له معاملې او د جنسیس له نرخ څخه، شتمني او time، یو ړندوونکی چې د تصدیق له ډایجسټ یا د سوځولو د معاملې له id څخه اخیستل شوی، مالک له جنسیس څخه)، نو د خزانې والټ یې له عامه ساحو څخه بیا جوړوي (نوټونه). BRIDGE_BURN_FEE، هغه 0.01 RAND چې سوځول یې وړاندیز کوونکي ته ورکوي، نه دی بدل شوی. له 14م تر 19م زنځیر پورې په Rand کې د پل فیس نه و.
راجستر له 15م زنځیر راهیسې
له 15م زنځیر راهیسې جنسیس د راجستر درې داسې قاعدې فعالوي چې 14م زنځیر نه درلودې، او د 20م زنځیر جنسیس همغه درې ارزښتونه ټاکي. هر یو د جنسیس هش او د ټوکن ریښې ته ژمن شوی دی.
| د genesis ساحه | 20 زنځیر | اغېز |
|---|---|---|
tokens.max_tokens | 4096 | رجستري له دې شمېر څخه زیات توکنونه نه ساتي؛ کله چې حد ته ورسېږي، RegisterToken او RegisterBridgedToken د RegistryFull په خطا ردېږي. ListBacking هېڅ توکن نه زیاتوي او له دې حد څخه اغېزمن نه دی |
tokens.burn_registration_fee | true | د ثبتولو registration_fee وړاندیز کوونکي ته نه ورکول کېږي، بلکې سوځول کېږي؛ وړاندیز کوونکی یوازې fee − registration_fee ساتي. rand_getSupply دا مقدار په burned او registration_fees_burned کې شمېري (عرضه) |
tokens.bound_note_value | true | یو TokenMint، لومړنی ضربول یا د پل زیرمه چې 2^63 یا تر هغه زیاته وي د AmountTooLarge په خطا ردېږي. هغه چې د یوه توکن total_supply 2^63 ته یا تر هغه پورته ورسوي، د SupplyTooLarge په خطا ردېږي |
د یادښت د ارزښت دا حد ځکه ټاکل شوی چې د بنډل سرکټ هر مقدار تر 63 بټونو پورې د حد له مخې ازمويي. هغه یادښت چې ارزښت یې 2^63 یا تر هغه زیات وي، ژمنه یې ثبتېدای شي خو هېڅکله نشي لګول کېدای، او بیا هم د توکن په عرضه کې شمېرل کېږي. هر نوډ هم په هر زنځیر کې داسې مقدار د منلو پر مهال ردوي، که د هغه زنځیر genesis هر څه وايي.
RPC او CLI
| مېتود | پارامیټرونه | پایله |
|---|---|---|
rand_getTokens | [from_index, limit]، اختیاري، ډیفالټ یې 0 او 1000 دي، او تر 1000 پورې محدودېږي | { enabled, registration_fee, next_index, max_tokens, burn_registration_fee, bound_note_value, tokens }، د شاخص له مخې په صعودي ترتیب، له from_index څخه په لړۍ لوستل کېږي |
rand_getToken | [token]: یو شاخص، یو 64-hex پېژند یا rpl1… | د یوه توکن قطار، یا null؛ ناسم جوړ شوی پېژند -32602 ورکوي |
rand_getTokenSupply | [token]، په همغو بڼو | { total_supply, backings }؛ د اصلي توکن لپاره backings تش وي |
په دې پایلو کې هر مقدار (total_supply، registration_fee، د یوې ملاتړ locked، mint_cap_per_day او minted_today) لسیز متني تار دی، ځکه چې د JSON شمېره له 2⁵³ وروسته دقیقه نه پاتې کېږي. index، next_index، mint_day او max_tokens ساده بشپړ عددونه دي (په هغه زنځیر کې چې حد نه لري max_tokens null دی). burn_registration_fee او bound_note_value بولیني ارزښتونه دي. د یوه قطار authority یو له دې بڼو لري: {"kind":"none"}، {"kind":"key","key","address"}، {"kind":"bridge","backings":[…]} یا {"kind":"program","program"}. بشپړ جزییات په JSON-RPC کې دي.
محرمیت. د rand_getTokens لګښت یو شان دی، غوښتونکی که هر توکن په ذهن کې ولري. خو rand_getToken او rand_getTokenSupply نوډ ته ښيي چې غوښتونکی کوم توکن ته پاملرنه لري. دا د بلاکونو سپړونکي لپاره سمه ده، خو د هغه والټ لپاره ناسمه ده چې لېږد ته چمتو وي. له همدې امله والټ هر --asset له بشپړ لېست څخه پېژني، او عددي شاخص هېڅکله نوډ ته نه ورلېږل کېږي.
| کمانډ | څه کوي |
|---|---|
rand token create | د رجستري په راتلونکي شاخص کې یو توکن ثبتوي، چې یا ثابته عرضه لري یا د Key له لارې واک لري |
rand token mint | د داسې توکن نور واحدونه ضربوي چې د Key له لارې واک لري؛ لاسلیک یې د هغه د واک په کیلي کېږي |
rand token set-authority | واک بلې کیلي ته سپاري (--new-key) یا ترې تېرېږي (--renounce) |
rand token burn <ASSET> <AMOUNT> | هغه واحدونه سوځوي چې دا والټ یې لري |
rand token info <ASSET> | د یوه توکن بشپړ قطار |
rand token list | د رجستري یوه پاڼه |
rand send <TO> <AMOUNT> --asset <INDEX|rpl1…|hex> | یو توکن په یوه بنډل کې لېږي؛ که --asset ورنه کړل شي، RAND لېږي. د ترلاسه کوونکي ګوتنښه او مقدار چاپوي او د ثبوت له جوړولو مخکې send? [y/N] پوښتي (--yes دا پوښتنه پرېږدي) |
rand asset-balance [INDEX] | دا والټ له یوې شتمنۍ څومره لري، یا د هرې شتمنۍ لپاره یو قطار ښيي |
rand token register-bridged، rand token list-backing | د پل د لېست کولو دوه کړنې؛ هره یوه یې د PQ ساتونکو د کورم فایل ته اړتیا لري |
له v0.5.10 راهیسې د rand send --asset، rand token mint او rand token burn مقدارونه د توکن په نندارې واحدونو کې لیکل کېږي. دا مقدارونه د توکن د رجستري قطار د خپل decimals له مخې لوستل کېږي: د یوه 6-لسیز توکن 1.5 د هغه د کوچني واحد له 1,500,000 سره برابر دی، او که کسري عددونه د توکن له لسیزو څخه زیات وي، ردېږي. د send تایید دواړه بڼې چاپوي (1.500000 USDX (1500000 units)). د rand token create --fixed-supply او --initial لا هم مقدار په بشپړو کوچنیو واحدونو کې اخلي، rand bridge-burn هم همداسې کوي، او rand asset-balance کوچني واحدونه چاپوي. په زنځیر کې مقدار تل د کوچني واحد بشپړ عدد دی. بیرغونه او ډیفالټونه په کمانډ لاین کې دي.
له ERC-20 او SPL سره توپیرونه
| ERC-20 / SPL | RPL | |
|---|---|---|
| بیلانسونه | عامه نقشه یا حساب | پټ یادښتونه؛ یوازې د کیلي خاوند یې لیدلی شي |
| د لېږد پېښې | عامه، له لېږونکي، ترلاسه کوونکي او مقدار سره | نشته؛ لېږد هېڅ داسې څه نه خپروي چې د پېژندنې وړ وي |
| د هر توکن ځانګړی کوډ | ممکن دی: مالیه، د عرضې بیا تنظیم، هوکونه، کنګلول | نشته؛ هر توکن د یو شان ثابتو قواعدو تابع دی |
| د پروګرام له خوا ساتل | هو | په 20 زنځیر کې (RPL-2): د پروګرام عامه خزانه، چې د بلنې د سوځولو ساحې یې ډکوي او تادیه یې د زنځیر له خوا محاسبه شوي یادښتونو په بڼه کېږي |
| مقدارونه | تر 256-bit پورې (ERC-20)، 64-bit (SPL) | u64، تر ټولو ډېر 9 لسیزې |
| ترلاسه کول | ERC-20 هېڅ تنظیم ته اړتیا نه لري؛ SPL یو تړلي توکن حساب ته اړتیا لري | تنظیم ته اړتیا نشته؛ هره پټه پته هر څه ترلاسه کولی شي |
| د لېږد لګښت | ساده EVM یا SVM اجرا | لېږونکی یې ثبوت جوړوي: د پټې شتمنۍ ګډ بنډل، او له 17 زنځیر راهیسې ورسره یو کوچنی د اجازې ثبوت |
| اجازې | approve / transferFrom | لا نشته |
| مېټاډېټا | په ځینو پلي کولو کې د بدلون وړ | په زنځیر کې ثبتېږي او نه بدلېږي |
| کنګلول، تور لېست | په ځینو توکنونو کې ممکن | په قصدي ډیزاین له ساحې بهر |
پېژندل شوي محدودیتونه
- اجازې نشته.
approveاوtransferFromد RPL په مشخصاتو کې د ځانګړو اجازې حسابونو په توګه ډیزاین شوي، خو لا نه دي جوړ شوي. - د پروګرام شتمنۍ عامه دي. په 20 زنځیر کې پروګرام کولی شي توکنونه په خپله خزانه کې وساتي او خپل توکن ضرب کړي (RPL-2)، خو د خزانې بیلانس د توکن د عرضې په څېر عامه دی؛ یوازې یادښتونه محرم دي. له 20 مخکې زنځیرونو هېڅ ډول د پروګرام حالت نه درلود.
- فیسونه یوازې په RAND ورکول کېږي. توکن خپله فیس نشي ورکولی؛ هغه والټ چې یوازې توکن لري، هېڅ لېږد نشي کولی.
u64مقدارونه او تر ټولو ډېر 9 لسیزې. هغه سرچینه سکه چې 18 لسیزې لري، په ټیټ دقت ښودل کېږي؛ پل دا ستونزه په 8 لسیزو او د هرې ملاتړ لپاره د خوشې کولو په یوه واحد حل کوي.- د هر لېږد ثبوت جوړېږي. دا د لېږونکي پر ماشین شاوخوا 100 s وخت او څو GB حافظه غواړي؛ د توکن لپاره له RAND څخه ارزانه لاره نشته.
- کنګلول، تور لېست یا ودرول نشته. دا د اصلي توکن لپاره د پرېکړې له مخې دي. د پل د ضربولو ودرول یوازې پر هغو توکنونو پلي کېږي چې د پل له لارې ضربېږي.
- د هر توکن لټون علاقه افشا کوي.
rand_getToken،rand_getTokenSupplyاو د سپړونکي/tokens/:idسرور ته ښيي چې د کوم توکن په اړه پوښتنه شوې.