انواع مختلف اشیا به روش های مختلف به طور منحصر به فرد شناسایی می شوند:
حسابها با آدرسشان شناسایی میشوند، برای مثال "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59". آدرس ها همیشه با "r" شروع می شوند. بسیاری از روش های موج دار نیز نمایش هگزادسیمال را می پذیرند.
تراکنش ها با هش فرمت باینری تراکنش شناسایی می شوند. شما همچنین می توانید یک تراکنش را با حساب ارسال و شماره ترتیب آن شناسایی کنید.
هر Ledger بسته دارای یک Ledger Index و یک مقدار Hash است. هنگام تعیین دفتر کل می توانید از یکی از آنها استفاده کنید.
آدرس ها
حساب های موجود در XRP Ledger با آدرسی در قالب XRP Ledger's base58 شناسایی می شوند. آدرس از کلید عمومی اصلی حساب مشتق شده است که به نوبه خود از یک کلید مخفی مشتق شده است. یک آدرس به عنوان یک رشته در JSON نشان داده می شود و دارای ویژگی های زیر است:
- بین 25 تا 35 کاراکتر طول دارد
- با کاراکتر r شروع می شود
- از نویسههای الفبایی استفاده میکند، به استثنای عدد "0" حرف بزرگ "O"، حرف بزرگ "I" و حرف کوچک "l"
- حساس به حروف کوچک و بزرگ
- شامل یک جمع 4 بایتی است به طوری که احتمال ایجاد یک آدرس معتبر از کاراکترهای تصادفی تقریباً 1 در 2 32 است.
توجه: انجمن XRP یک قالب X-address را پیشنهاد کرده است که یک برچسب مقصد را در آدرس "بسته" می کند. این آدرس ها با X (برای شبکه اصلی) یا T (برای شبکه آزمایشی) شروع می شوند. صرافی ها و کیف پول ها می توانند از آدرس های X برای نمایش تمام داده هایی که مشتری باید بداند در یک مقدار استفاده کنند. برای اطلاعات بیشتر، به سایت قالب و کدک آدرس X مراجعه کنید.
پروتکل XRP Ledger فقط از آدرسهای کلاسیک به صورت بومی پشتیبانی میکند، اما بسیاری از کتابخانههای مشتری از آدرسهای X نیز پشتیبانی میکنند.
برای اطلاعات بیشتر، به حسابها و کدگذاریهای base58 مراجعه کنید.
هش
بسیاری از اشیاء در XRP Ledger، بهویژه تراکنشها و دفتر کل، بهطور منحصربهفرد با یک مقدار هش ۲۵۶ بیتی شناسایی میشوند. این مقدار معمولاً به عنوان یک "SHA-512Half" محاسبه می شود، که هش SHA-512 را از برخی محتویات محاسبه می کند، سپس نیمه اول خروجی را می گیرد.(این 256 بیت است که 32 بایت یا 64 کاراکتر از نمایش هگزا دسیمال است.) از آنجایی که هش یک شی از محتویات به گونه ای مشتق شده است که بسیار بعید است که برخورد ایجاد کند، می توان دو شی با هش یکسان را در نظر گرفت. همان
یک مقدار هش XRP Ledger دارای ویژگی های زیر است:
- دقیقاً 64 کاراکتر در مجموعه کاراکترهای طولی: 0-9 و A-F.
- معمولا با حروف بزرگ نوشته می شود.
توجه: SHA-512HALF امنیت مشابهی با عملکرد رسمی Hash SHA-512/256 مشخص شده دارد. با این حال ، استفاده از Ledger XRP از SHA-512/256 پیش بینی می کند و همچنین اجرای آن در بالای عملکرد SHA-512 موجود آسان تر است.(از این نوشتار ، پشتیبانی SHA-512 در کتابخانه های رمزنگاری بسیار رایج تر از SHA-512/256 است.)
پیشوندهای هاش
در بسیاری از موارد ، دفترچه XRP قبل از محاسبه هش خود ، داده های باینری یک شی را با کد 4 بایت پیشوند می کند ، به طوری که اشیاء از انواع مختلف حتی اگر قالب های باینری آنها یکسان باشند ، هش های مختلفی دارند. کدهای 4 بایت موجود به عنوان سه کاراکتر الفبایی ساخته شده اند ، به عنوان ASCII رمزگذاری شده و به دنبال آن یک بایت صفر است.
برخی از انواع هش در درخواست ها و پاسخ های API ظاهر می شوند. برخی دیگر فقط به عنوان اولین قدم برای امضای نوع خاصی از داده ها یا محاسبه هش سطح بالاتر محاسبه می شوند. جدول زیر تمام پیشوندهای هش 4 بایت را نشان می دهد که دفترچه XRP از آن استفاده می کند:
نوع شیء | زمینه های API | پیشوند هاش (هگز) | پیشوند هاش (متن) |
---|---|---|---|
پیشنهاد اجماع | N/A | 0x50525000 | PRP \ 0 |
نسخه اصلی | LEDGER_HASH | 0x4c575200 | LWR \ 0 |
داده های دولت لجر | account_state در عنوان Ledger | 0x4d4c4e00 | MLN \ 0 |
گره داخلی داده های لجر | N/A | 0x4d494e00 | حداقل \ 0 |
گره داخلی داده Ledger (shamapv2) | N/A | 0x494e5200 | INR \ 0 |
ادعای کانال پرداخت | N/A | 0x434c4d00 | CLM \ 0 |
معامله امضا شده | هش معاملات | 0x54584e00 | TXN \ 0 |
معامله با ابرداده | N/A | 0x534e4400 | SND \ 0 |
معامله بدون امضا (امضای تک) | N/A | 0x53545800 | STX \ 0 |
معامله بدون امضا (چند امضا) | N/A | 0x534d5400 | SMT \ 0 |
رأی اعتبار سنجی | N/A | 0x56414c00 | وال \ 0 |
اعتبار سنج | N/A | 0x4d414e00 | مرد \ 0 |
شناسه اشیاء Ledger به روشی مشابه محاسبه می شود ، اما آنها از پیشوند 2 بایت به نام "کلید فضا" به جای پیشوند در فرم شرح داده شده در اینجا استفاده می کنند.
ترتیب حساب
شماره دنباله یک عدد صحیح 32 بیتی است که برای اطمینان از انجام معاملات از یک فرستنده داده شده فقط یک بار و به ترتیب صحیح انجام می شود.
هر حساب در دفترچه XRP دارای یک شماره دنباله در قسمت دنباله خود است که هر زمان که آن حساب یک معامله را ارسال می کند ، 1 افزایش می یابد و معامله در یک دفترچه معتبر گنجانده می شود. هر معامله همچنین دارای یک شماره دنباله در قسمت دنباله خود است که هنگام انجام معامله باید با شماره توالی فعلی حساب مطابقت داشته باشد. برای هر حساب ، هر شماره دنباله فقط یک بار و به ترتیب عددی قابل استفاده است.
بلیط ها از این قوانین استثنائاتی می کنند تا امکان ارسال معاملات از ترتیب عادی وجود داشته باشد. بلیط ها تعداد توالی را برای استفاده بعدی نشان می دهد. معامله می تواند به جای شماره دنباله عادی از بلیط استفاده کند.
با اصلاحیه حذف DeletableAcounts ، شماره دنباله شروع برای یک حساب با شاخص دفترچه راهنما که در آن حساب ایجاد شده است مطابقت دارد. قبل از DeleteabeAccounts ، هر حساب با دنباله شماره 1 شروع شد.
هر زمان که معامله ای در دفترچه گنجانده شود ، بدون توجه به اینکه معامله با موفقیت انجام شده یا با کد خطای TE C-کلاس انجام شده است ، از شماره دنباله (یا بلیط) استفاده می کند. سایر خرابی های معامله در دفترچه ها گنجانده نمی شوند ، بنابراین آنها شماره توالی فرستنده را تغییر نمی دهند (یا تأثیر دیگری دارند).
در داخل دفترچه ، یک آدرس و یک شماره دنباله گاهی با هم برای شناسایی شیء که توسط معامله معتبر با آن فرستنده و شماره دنباله ایجاد شده است ، استفاده می شود. سپرده ها و پیشنهادات نمونه هایی از اشیاء مشخص شده از این طریق هستند.
این امکان وجود دارد که چندین معاملات تأیید نشده دارای همان فرستنده و شماره دنباله باشند. چنین معاملات متقابلاً منحصر به فرد است و حداکثر یکی از آنها را می توان در یک دفترچه معتبر قرار داد.(هر کس دیگری در نهایت هیچ تاثیری ندارد.)
فهرست
شاخص لجر یک عدد صحیح بدون امضا 32 بیتی است که برای شناسایی یک دفترچه استفاده می شود. شاخص لجر گاهی به عنوان شماره دنباله دفترچه شناخته می شود.(این با یک دنباله حساب متفاوت است.) اولین دفترچه Ledger Index 1 بود ، و هر دفترچه جدید دارای یک شاخص Ledger است که 1 بالاتر از فهرست دفترچه راهنما بلافاصله قبل از آن است.
شاخص دفترچه نشانگر ترتیب دفترچه ها است. مقدار هش محتوای دقیق دفترچه را مشخص می کند. دو رهبر با همان هش همیشه یکسان هستند. برای دفترچه های معتبر ، مقادیر هش و شاخص های دفترچه به همان اندازه معتبر هستند و 1: 1 همبستگی دارند. با این حال ، این برای رهبران در حال پیشرفت صحیح نیست:
- دو سرور موج دار مختلف ممکن است به دلیل تأخیر در انتشار معاملات در سراسر شبکه ، محتویات متفاوتی برای یک دفترچه فعلی با همان شاخص دفترچه داشته باشند.
- ممکن است چندین نسخه Ledger بسته وجود داشته باشد که با اجماع تأیید شوند. این نسخه های دفترچه دارای یک شاخص دفترچه یکسان اما محتوای مختلف (و هش های مختلف) هستند. فقط یکی از این دفترچه های بسته می تواند تأیید شود.
- هش لجر فعلی محاسبه نمی شود. این امر به این دلیل است که محتویات Ledger فعلی با گذشت زمان تغییر می کند ، که باعث می شود هش آن تغییر کند ، حتی اگر شاخص دفترچه آن یکسان باشد. هش یک دفترچه فقط در هنگام بسته شدن دفترچه محاسبه می شود.
مشخص کردن دفترچه ها
بسیاری از روش های API شما را ملزم به مشخص کردن نمونه ای از دفترچه می کنند ، با این که داده ها به روز شده به روز از آن نسخه خاص از دفترچه مشترک در نظر گرفته می شوند. دستوراتی که نسخه Ledger را می پذیرند همه به همان روش کار می کنند. سه روش وجود دارد که می توانید مشخص کنید که کدام دفتر را می خواهید استفاده کنید:
دفترچه راهنما را توسط شاخص Ledger خود در پارامتر LEDGER_INDEX مشخص کنید. هر دفترچه بسته دارای شاخص دفترچه ای است که 1 بالاتر از دفترچه قبلی است.(اولین دفترچه دارای شاخص Ledger 1 بود.)
یک دفترچه را با مقدار هش در پارامتر LEDGER_HASH مشخص کنید.
در پارامتر LEDGER_INDEX یک دفترچه را توسط یکی از میانبرهای زیر مشخص کنید:
برای جدیدترین دفترچه که با اجماع تأیید شده است ، تأیید شده است
بسته برای جدیدترین دفتر که برای اصلاحات بسته شده و برای اعتبار سنجی پیشنهاد شده است
فعلی برای نسخه کار فعلی سرور Ledger.
همچنین یک پارامتر لجر مستهلک وجود دارد که هر یک از سه قالب فوق را می پذیرد. از این پارامتر استفاده نکنید. ممکن است بدون اطلاع بیشتر حذف شود.
اگر دفترچه را مشخص نکنید ، سرور تصمیم می گیرد که کدام دفتر را برای ارائه درخواست استفاده کند. به طور پیش فرض ، سرور دفترچه فعلی (در حال پیشرفت) را انتخاب می کند. در حالت گزارش دهی ، سرور به جای آن از جدیدترین دفترچه معتبر استفاده می کند. بیش از یک زمینه را مشخص نکنید که Ledgers را مشخص کنید.
توجه: برای مشخص کردن دفترچه به رفتار پیش فرض اعتماد نکنید. در معرض تغییر است. در صورت امکان ، همیشه نسخه Ledger را در درخواست مشخص کنید.
حالت گزارش دهی داده های دفترچه را ضبط نمی کند تا زمانی که تأیید نشود. اگر درخواست سرور حالت گزارش دهی را برای Ledger فعلی یا بسته ارائه دهید ، سرور درخواست را به سرور حالت P2P ارسال می کند. اگر درخواست یک فهرست دفترچه یا هش را که معتبر نیست ، درخواست می کنید ، یک سرور حالت گزارشگری با یک خطای lgrnotfound پاسخ می دهد.
تعیین مبالغ ارز
در دفترچه XRP دو نوع ارز وجود دارد: XRP و نشانه ها. این دو نوع ارز در قالب های مختلف و با دقت و رفتار مختلف گردشویی مشخص شده است.
برخی از زمینه ها ، مانند مقدار مقصد معامله پرداخت ، می توانند از هر نوع باشند. برخی از زمینه ها فقط XRP را به طور خاص می پذیرند ، مانند زمینه هزینه (هزینه معامله).
XRP به عنوان رشته ای مشخص می شود که دارای تعداد صحیح "قطره" XRP است، که در آن 1 میلیون قطره برابر با 1 XRP است. توکنها در عوض بهعنوان یک شی با فیلدهایی برای مقدار اعشاری، کد ارز و صادرکننده مشخص میشوند. مثلا:
XRP - برای تعیین یک فیلد Amount با مقدار 13. 1 XRP:
Token - برای تعیین یک فیلد Amount با مقدار FOO 13. 1 صادر شده توسط یا به rf1B.:
برای اطلاعات بیشتر، به فرمت های ارز مراجعه کنید.
تعیین زمان
سرور موج دار و API های آن زمان را به عنوان یک عدد صحیح بدون علامت نشان می دهند. این عدد تعداد ثانیههایی را که از «عصر ریپل» در 1 ژانویه 2000 (00:00 UTC) میگذرد را اندازهگیری میکند. این مانند روشی است که دوره یونیکس کار می کند، با این تفاوت که دوره ریپل 946684800 ثانیه بعد از دوره یونیکس است.
زمان های Ripple Epoch را در متغیرهای 32 بیتی به زمان های UNIX Epoch تبدیل نکنید: این می تواند منجر به سرریز اعداد صحیح شود.