ProHoster > Blog > Ma'muriyat > Sinov mijozi TON (Telegram Open Network) va aqlli shartnomalar uchun yangi Fift tili
Sinov mijozi TON (Telegram Open Network) va aqlli shartnomalar uchun yangi Fift tili
Bir yildan ko'proq vaqt oldin Telegram messenjeri o'zining markazlashtirilmagan tarmog'ini chiqarish rejalari haqida ma'lum bo'lgan edi. Telegram Ochiq Tarmoq. Keyin Nikolay Durov tomonidan yozilgan va kelajakdagi tarmoqning tuzilishi tasvirlangan katta hajmli texnik hujjat paydo bo'ldi. Uni o'tkazib yuborganlar uchun men ushbu hujjatning qayta hikoyasini o'qishni tavsiya qilaman (1-qism, 2-qism; uchinchi qism, afsuski, hali ham qoralamalarda chang yig'moqda).
O'shandan beri, bir necha kun oldin TON rivojlanishining holati to'g'risida muhim yangilik yo'q edi (birida norasmiy kanallar) sahifaga havola ko'rinmadi https://test.ton.org/download.html, qayerda joylashgan:
◦ ton-test-liteclient-full.tar.xz — TON test tarmog'i uchun yorug'lik mijozining manbalari;
◦ ton-lite-client-test1.config.json — test tarmog'iga ulanish uchun konfiguratsiya fayli;
◦ README — mijozni qurish va ishga tushirish haqida ma'lumot;
◦ QANDAY — mijoz yordamida aqlli shartnoma tuzish bo'yicha bosqichma-bosqich ko'rsatmalar;
◦ ton.pdf — TON tarmogʻining texnik koʻrinishi bilan yangilangan hujjat (2-yil 2019-mart);
◦ tvm.pdf — TVM ning texnik tavsifi (TON Virtual Machine, TON virtual machine);
◦ tblkch.pdf — TON blokcheynining texnik tavsifi;
◦ fifthbase.pdf — TONda aqlli shartnomalar yaratish uchun moʻljallangan yangi Fift tilining tavsifi.
Takror aytaman, sahifa va bu hujjatlarning barchasi Telegram’dan rasmiy tasdiqlanmagan, biroq bu materiallarning hajmi ularni juda ishonarli qiladi. Chop etilgan mijozni ishga tushiring o'z xavf-xatarida.
Sinov mijozini yaratish
Birinchidan, sinov mijozini yaratishga va ishga tushirishga harakat qilaylik - xayriyatki, README bu oddiy jarayonni batafsil tasvirlab beradi. Men buni misol sifatida macOS 10.14.5 yordamida qilaman; Boshqa tizimlarda qurish muvaffaqiyatiga kafolat bera olmayman.
Yuklab oling va paketdan chiqaring manba arxivi. Eng so'nggi versiyani yuklab olish juda muhim, chunki bu bosqichda orqaga qarab muvofiqlik kafolatlanmaydi.
Tizimda make, cmake (3.0.2 yoki undan yuqori versiya), OpenSSL (jumladan, C sarlavhasi fayllari), g++ yoki clang soʻnggi versiyalari oʻrnatilganligiga ishonch hosil qiling. Men hech narsa o'rnatishim shart emas edi, hamma narsa darhol birlashdi.
Faraz qilaylik, manbalar papkaga ochilgan ~/lite-client. Undan alohida yig'ilgan loyiha uchun bo'sh papka yarating (masalan, ~/liteclient-build), va undan (cd ~/liteclient-build) buyruqlarni chaqiring:
Agar hamma narsa to'g'ri bajarilgan bo'lsa, siz shunday bir narsani ko'rishingiz kerak:
Ko'rib turganimizdek, bir nechta buyruqlar mavjud:
◦ help — ushbu buyruqlar ro'yxatini ko'rsatish;
◦ quit - tashqariga chiqish;
◦ time — serverda joriy vaqtni ko'rsatish;
◦ status — ulanish va mahalliy ma'lumotlar bazasi holatini ko'rsatish;
◦ last — blokcheyn holatini yangilang (oxirgi blokni yuklab oling). Tarmoqning joriy holatini ko'rganingizga ishonch hosil qilish uchun har qanday so'rovlardan oldin ushbu buyruqni bajarish muhimdir.
◦ sendfile<filename> — TON tarmog'iga mahalliy faylni yuklang. Tarmoq bilan o'zaro aloqa shunday amalga oshiriladi - masalan, yangi smart-kontraktlar yaratish va hisoblar o'rtasida pul mablag'larini o'tkazish bo'yicha so'rovlar;
◦ getaccount<address> — joriyni ko'rsatish (buyruq bajarilgan vaqtda) last) ko'rsatilgan manzil bilan hisobning holati;
◦ privkey<filename> — shaxsiy kalitni mahalliy fayldan yuklang.
Agar mijozni ishga tushirayotganda, opsiyadan foydalanib, unga jildni o'tkazsangiz -D, keyin u masterchainning oxirgi blokini unga qo'shadi:
Endi biz qiziqarliroq narsalarga o'tishimiz mumkin - Fift tilini o'rganing, aqlli shartnoma tuzishga harakat qiling (masalan, test hamyonini yarating), uni tarmoqqa yuklang va hisoblar o'rtasida pul o'tkazishga harakat qiling.
Beshinchi til
Hujjatdan fifthbase.pdf Telegram jamoasi aqlli shartnomalar yaratish uchun yangi stek tilini yaratganini bilib olishingiz mumkin Besh (ko'rinishidan raqamdan beshinchi, Forth tiliga o'xshash, Fifth bilan juda ko'p umumiylik mavjud).
Hujjat juda katta hajmli, 87 sahifadan iborat va men ushbu maqola doirasida uning mazmunini batafsil aytib bermayman (hech bo'lmaganda o'zim o'qishni tugatmaganim uchun :). Men asosiy fikrlarga e'tibor qarataman va ushbu tilda bir nechta kod misollarini keltiraman.
Asosiy darajada Fiftning sintaksisi juda oddiy: uning kodi quyidagilardan iborat so'zlar, odatda bo'shliqlar yoki qatorlar bilan ajratiladi (maxsus holat: ba'zi so'zlar o'zidan keyin ajratuvchini talab qilmaydi). Har qanday so'z ma'lum bir harfga mos keladigan belgilar ketma-ketligi aniqlash (taxminan, tarjimon bu so'zga duch kelganda nima qilishi kerak). Agar so'zning ta'rifi bo'lmasa, tarjimon uni raqam sifatida tahlil qilishga va stekga qo'yishga harakat qiladi. Aytgancha, bu yerdagi raqamlar - to'satdan - 257 bitli butun sonlar va kasrlar umuman yo'q - aniqrog'i, ular darhol bir juft butun songa aylanadi va ratsional kasrning soni va maxrajini tashkil qiladi.
So'zlar to'plamning yuqori qismidagi qiymatlar bilan o'zaro ta'sir qiladi. So'zlarning alohida turi - prefiks — stekni emas, balki manba faylidagi keyingi belgilarni ishlatadi. Masalan, string literallari shunday amalga oshiriladi - tirnoq belgisi (") keyingi (yopilish) qo‘shtirnoqni qidiradigan va ular orasidagi satrni stekga suruvchi prefiks so‘zdir. Bitta laynerlar xuddi shunday yo'l tutishadi (//) va ko'p qatorli (/*) Izohlar.
Bu erda tilning deyarli butun ichki tuzilishi tugaydi. Qolgan barcha narsalar (shu jumladan boshqaruv tuzilmalari) so'zlar (ichki, masalan, arifmetik amallar va yangi so'zlarning ta'rifi); yoki "standart kutubxona" da belgilangan. Fift.fif, papkada joylashgan crypto/fift manbalarda).
Fiftda oddiy misol dastur:
{ dup =: x dup * =: y } : setxy
3 setxy x . y . x y + .
7 setxy x . y . x y + .
Birinchi qator yangi so'zni belgilaydi setxy (prefiksga e'tibor bering {, bu yopilishdan oldin blokni yaratadi } va prefiks :, bu aslida so'zni belgilaydi). setxy stekning yuqori qismidan raqam oladi, uni global deb belgilaydi (yoki qayta belgilaydi). doimiyx, va bu sonning kvadrati doimiy sifatida y (Kontaktlarning qiymatlari qayta belgilanishi mumkinligini hisobga olib, men ularni o'zgaruvchilar deb atashni afzal ko'raman, lekin men tilda nomlash qoidalariga amal qilaman).
Keyingi ikkita satr stekga raqam qo'yadi va qo'ng'iroq qiladi setxy, keyin konstantalarning qiymatlari ko'rsatiladi x, y (so'z chiqish uchun ishlatiladi .), har ikkala konstanta ham stekga joylashtiriladi, jamlanadi va natija ham chop etiladi. Natijada biz ko'ramiz:
3 9 12 ok
7 49 56 ok
(“OK” qatori joriy satrni interaktiv kiritish rejimida qayta ishlashni tugatgandan so‘ng tarjimon tomonidan chop etiladi)
Ushbu qo'rqinchli ko'rinishdagi fayl aqlli shartnoma yaratish uchun mo'ljallangan - u faylga joylashtiriladi new-wallet-query.boc ijro etilgandan keyin. Shuni esda tutingki, bu erda TON Virtual Machine uchun boshqa assembler tili qo'llaniladi (men bu haqda batafsil to'xtalmayman), uning ko'rsatmalari blokcheynga joylashtiriladi.
Shunday qilib, TVM uchun assembler Fiftda yozilgan - bu assemblerning manbalari faylda crypto/fift/Asm.fif va yuqoridagi kod qismining boshida ulanadi.
Nima deyishim mumkin, Nikolay Durov shunchaki yangi dasturlash tillarini yaratishni yaxshi ko'radi :)
Aqlli shartnoma yaratish va TON bilan o'zaro aloqa qilish
Shunday qilib, biz yuqorida aytib o'tilganidek, TON mijozi va Fift tarjimonini yig'dik va til bilan tanishdik deb faraz qilaylik. Endi qanday qilib aqlli shartnoma tuzish mumkin? Bu faylda tasvirlangan QANDAY, manbalarga biriktirilgan.
TONdagi hisoblar
Men tasvirlaganimdek TON sharhi, bu tarmoq bir nechta blokcheynni o'z ichiga oladi - bitta umumiy deb ataladigan mavjud. "master zanjir", shuningdek, 32-bitli raqam bilan aniqlangan qo'shimcha "ish zanjirlari" ning o'zboshimchalik soni. Masterchainning identifikatori -1, unga qo'shimcha ravishda 0 identifikatorli “tayanch” ish zanjiri ham ishlatilishi mumkin.Har bir ish zanjiri o'z konfiguratsiyasiga ega bo'lishi mumkin. Ichkarida, har bir ish zanjiri shardchainlarga bo'lingan, ammo bu yodda tutish kerak bo'lmagan amalga oshirish detalidir.
Bitta ish zanjirida o'zlarining account_id identifikatorlariga ega bo'lgan ko'plab hisoblar saqlanadi. Asosiy zanjir va nol ish zanjiri uchun ular 256 bit uzunlikda. Shunday qilib, hisob identifikatori, masalan, quyidagicha yoziladi:
Bu "xom" format: birinchi navbatda ish zanjiri identifikatori, keyin ikki nuqta va o'n oltilik yozuvdagi hisob identifikatori.
Bundan tashqari, qisqartirilgan format mavjud - ish zanjiri raqami va hisob manzili ikkilik shaklda kodlangan, ularga nazorat summasi qo'shiladi va bularning barchasi Base64 da kodlangan:
Ef+BVndbeTJeXWLnQtm5bDC2UVpc0vH2TF2ksZPAPwcODSkb
Ushbu yozuv formatini bilib, biz buyruq yordamida sinov mijozi orqali hisobning joriy holatini so'rashimiz mumkin
[ 3][t 2][1558746708.815218925][test-lite-client.cpp:631][!testnode] requesting account state for -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D
[ 3][t 2][1558746708.858564138][test-lite-client.cpp:652][!testnode] got account state for -1:8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D with respect to blocks (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F and (-1,8000000000000000,72355):F566005749C1B97F18EDE013EBA7A054B9014961BC1AD91F475B9082919A2296:1BD5DE54333164025EE39D389ECE2E93DA2871DA616D488253953E52B50DC03F
account state is (account
addr:(addr_std
anycast:nothing workchain_id:-1 address:x8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D)
storage_stat:(storage_info
used:(storage_used
cells:(var_uint len:1 value:3)
bits:(var_uint len:2 value:539)
public_cells:(var_uint len:0 value:0)) last_paid:0
due_payment:nothing)
storage:(account_storage last_trans_lt:74208000003
balance:(currencies
grams:(nanograms
amount:(var_uint len:7 value:999928362430000))
other:(extra_currencies
dict:hme_empty))
state:(account_active
(
split_depth:nothing
special:nothing
code:(just
value:(raw@^Cell
x{}
x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
))
data:(just
value:(raw@^Cell
x{}
x{0000000D}
))
library:hme_empty))))
x{CFF8156775B79325E5D62E742D9B96C30B6515A5CD2F1F64C5DA4B193C03F070E0D2068086C000000000000000451C90E00DC0E35B7DB5FB8C134_}
x{FF0020DDA4F260D31F01ED44D0D31FD166BAF2A1F80001D307D4D1821804A817C80073FB0201FB00A4C8CB1FC9ED54}
x{0000000D}
Belgilangan ish zanjirining DHT-da saqlanadigan tuzilmani ko'ramiz. Masalan, dalada storage.balance joriy hisob balansi, d storage.state.code - aqlli shartnoma kodi va ichida storage.state.data - uning joriy ma'lumotlari. E'tibor bering, TON ma'lumotlar ombori - Hujayra, hujayralar - daraxtga o'xshaydi, har bir hujayra o'z ma'lumotlari va yordamchi hujayralarga ega bo'lishi mumkin. Bu oxirgi satrlarda chekinish sifatida ko'rsatilgan.
Aqlli shartnoma tuzish
Keling, bunday tuzilmani o'zimiz yarataylik (u BOC deb ataladi - hujayralar sumkasi) Fift tilidan foydalanish. Yaxshiyamki, siz o'zingiz aqlli shartnoma yozishingiz shart emas - papkada crypto/block manba arxividan fayl mavjud new-wallet.fif, bu bizga yangi hamyonni yaratishga yordam beradi. Keling, uni yig'ilgan mijoz bilan jildga nusxalaymiz (~/liteclient-build, agar siz yuqoridagi ko'rsatmalarga amal qilgan bo'lsangiz). Men uning mazmunini Fift-dagi kod misoli sifatida keltirdim.
u <source-directory> Ochilmagan manbalar yo'li bilan almashtirilishi kerak (afsuski, bu erda "~" belgisini ishlatib bo'lmaydi, to'liq yo'l kerak). Kalitni ishlatish o'rniga -I muhit o'zgaruvchisini belgilashingiz mumkin FIFTPATH va bu yo'lni unga qo'ying.
Fayl nomi bilan Fiftni ishga tushirganimizdan beri new-wallet.fif, u uni bajaradi va chiqadi. Agar fayl nomini o'tkazib yuborsangiz, tarjimon bilan interaktiv tarzda o'ynashingiz mumkin.
Amalga oshirilgandan so'ng, konsolda shunga o'xshash narsa ko'rsatilishi kerak:
StateInit: x{34_}
x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}
new wallet address = -1 : 4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2
0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ
signing message: x{00000000}
External message for initialization is x{89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001_}
x{FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED54}
x{0000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B}
B5EE9C724104030100000000D60002CF89FEE120E20C7E953E31546F64C23CD654002C1AA919ADD24DB12DDF85C6F3B58AE41198A28AD8DAF3B9588E7A629252BA3DB88F030D00BC1016110B2073359EAC3C13823C53245B65D056F2C070B940CDA09789585935C7ABA4D2AD4BED139281CFA1200000001001020084FF0020DDA4F260810200D71820D70B1FED44D0D31FD3FFD15112BAF2A122F901541044F910F2A2F80001D31F3120D74A96D307D402FB00DED1A4C8CB1FCBFFC9ED5400480000000055375F730EDC2292E8CB15C42E8036EE9C25AA958EE002D2DE48A205E3A3426B6290698B
(Saved to file new-wallet-query.boc)
Bu ID bilan hamyon, degan ma'noni anglatadi -1:4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2 (yoki bir xil narsa, 0f9PzVILj8yglrVn1zS-NSjtxr7QBfaTCp7JrBqnFPIR8nhZ) muvaffaqiyatli yaratildi. Tegishli kod faylda bo'ladi new-wallet-query.boc, uning manzili new-wallet.addr, va shaxsiy kalit ichkarida new-wallet.pk (ehtiyot bo'ling - skriptni qayta ishga tushirish ushbu fayllarning ustiga yoziladi).
Albatta, TON tarmog'i bu hamyon haqida hali bilmaydi, u faqat ushbu fayllar ko'rinishida saqlanadi. Endi uni tarmoqqa yuklash kerak. Biroq, muammo shundaki, aqlli shartnoma yaratish uchun siz komissiya to'lashingiz kerak va hisobingizdagi balans hali ham nolga teng.
Ish rejimida bu muammo birjada gramm sotib olish (yoki boshqa hamyondan o'tkazish) orqali hal qilinadi. Xo'sh, joriy test rejimida maxsus aqlli shartnoma yaratildi, undan siz xuddi shunday 20 grammgacha so'rashingiz mumkin.
Birovning aqlli shartnomasiga so'rov yaratish
Biz grammlarni chapga va o'ngga shunday taqsimlaydigan aqlli shartnomaga so'rov yuboramiz. Xuddi shu papkada crypto/block faylni toping testgiver.fif:
// "testgiver.addr" file>B 256 B>u@
0x8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d
dup constant wallet_addr ."Test giver address = " x. cr
0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2
constant dest_addr
-1 constant wc
0x00000011 constant seqno
1000000000 constant Gram
{ Gram swap */ } : Gram*/
6.666 Gram*/ constant amount
// b x --> b' ( serializes a Gram amount )
{ -1 { 1+ 2dup 8 * ufits } until
rot over 4 u, -rot 8 * u, } : Gram,
// create a message (NB: 01b00.., b = bounce)
<b b{010000100} s, wc 8 i, dest_addr 256 u, amount Gram, 0 9 64 32 + + 1+ 1+ u, "GIFT" $, b>
<b seqno 32 u, 1 8 u, swap ref, b>
dup ."enveloping message: " <s csr. cr
<b b{1000100} s, wc 8 i, wallet_addr 256 u, 0 Gram, b{00} s,
swap <s s, b>
dup ."resulting external message: " <s csr. cr
2 boc+>B dup Bx. cr
"wallet-query.boc" B>file
Biz uni yig'ilgan mijoz bilan papkaga ham saqlaymiz, lekin biz beshinchi qatorni - satrdan oldin tuzatamiz "constant dest_addr". Keling, uni avval yaratgan hamyon manzili bilan almashtiramiz (to'liq, qisqartirilmagan). Boshiga “-1:” yozishning hojati yo‘q, uning o‘rniga “0x” qo‘ying.
Siz chiziqni ham o'zgartirishingiz mumkin 6.666 Gram*/ constant amount — bu siz soʻragan grammdagi miqdor (20 dan oshmasligi kerak). Agar butun sonni ko'rsatsangiz ham, kasrni qoldiring.
Nihoyat, siz chiziqni tuzatishingiz kerak 0x00000011 constant seqno. Bu erda birinchi raqam joriy tartib raqami bo'lib, u grammlarni beruvchi hisobda saqlanadi. Uni qayerdan olsam bo'ladi? Yuqorida aytib o'tilganidek, mijozni ishga tushiring va ishga tushiring:
last
getaccount -1:8156775b79325e5d62e742d9b96c30b6515a5cd2f1f64c5da4b193c03f070e0d
Oxirida aqlli shartnoma ma'lumotlari mavjud bo'ladi
0000000D raqami (sizniki kattaroq bo'ladi) ketma-ket raqam bo'lib, u bilan almashtirilishi kerak. testgiver.fif.
Hammasi shu, faylni saqlang va ishga tushiring (./crypto/fift testgiver.fif). Chiqish fayl bo'ladi wallet-query.boc. Bu shakllangan narsa xabar boshqa birovning aqlli shartnomasiga - "falon hisobga shuncha gramm o'tkazish" so'rovi.
Mijozdan foydalanib, biz uni tarmoqqa yuklaymiz:
> sendfile wallet-query.boc
[ 1][t 1][1558747399.456575155][test-lite-client.cpp:577][!testnode] sending query from file wallet-query.boc
[ 3][t 2][1558747399.500236034][test-lite-client.cpp:587][!query] external message status is 1
Agar hozir qo'ng'iroq qilsangiz last, va keyin yana biz gramm so'ragan hisobning holatini so'rang, keyin biz uning tartib raqami bittaga ko'payganini ko'rishimiz kerak - bu bizning hisobimizga pul yuborganligini anglatadi.
Oxirgi qadam qoladi - hamyonimiz kodini yuklab oling (uning balansi allaqachon to'ldirilgan, ammo aqlli shartnoma kodisiz biz uni boshqara olmaymiz). Biz bajaramiz sendfile new-wallet-query.boc - tamom, sizning TON tarmog'ida o'z hamyoningiz bor (hozircha bu faqat sinov bo'lsa ham).
Chiquvchi tranzaktsiyalarni yaratish
Yaratilgan hisob balansidan pul o'tkazish uchun fayl mavjud crypto/block/wallet.fif, bu ham yig'ilgan mijoz bilan papkaga joylashtirilishi kerak.
Oldingi bosqichlarga o'xshab, siz o'tkazayotgan summani, qabul qiluvchining manzilini (dest_addr) va hamyoningiz seqnosini sozlashingiz kerak (u hamyonni ishga tushirgandan keyin 1 ga teng va har bir chiquvchi tranzaksiyadan keyin 1 ga ortadi - siz hisobingiz holatini so'rash orqali buni ko'ring). Sinovlar uchun siz, masalan, mening hamyonimdan foydalanishingiz mumkin - 0x4fcd520b8fcca096b567d734be3528edc6bed005f6930a9ec9ac1aa714f211f2.
Ishga tushganda (./crypto/fift wallet.fif) skript hamyoningiz manzilini (siz o‘tkazgan joydan) va uning shaxsiy kalitini fayllardan oladi new-wallet.addr и new-wallet.pk, va qabul qilingan xabar unga yoziladi new-wallet-query.boc.
Avvalgidek, tranzaktsiyani bevosita amalga oshirish uchun qo'ng'iroq qiling sendfile new-wallet-query.boc mijozda. Shundan so'ng, blokcheyn holatini yangilashni unutmang (last) va hamyonimiz balansi va seqno o'zgarganligini tekshiring (getaccount <account_id>).
Hammasi shu, endi biz TONda aqlli shartnomalar yaratishimiz va ularga so'rov yuborishimiz mumkin. Ko'rib turganingizdek, joriy funksionallik, masalan, grafik interfeysga ega bo'lgan yanada qulay hamyonni yaratish uchun etarli (ammo, u allaqachon messenjerning bir qismi sifatida mavjud bo'lishi kutilmoqda).
So'rovda faqat ro'yxatdan o'tgan foydalanuvchilar ishtirok etishlari mumkin. tizimga kirishiltimos.
TON, TVM, Fift tahlillari bilan maqolalarni davom ettirishga qiziqasizmi?
Ha, men TON haqida umumiy ma'lumotga ega bo'lgan maqolalar seriyasining tugashini kutyapman
Ha, Fift tili haqida ko'proq o'qish qiziq
Ha, men TON virtual mashinasi va uning assembleri haqida ko'proq ma'lumot olishni xohlayman
Yo'q, bularning hech biri qiziq emas
39 foydalanuvchi ovoz berdi. 12 nafar foydalanuvchi betaraf qolgan.
Telegram’ning TON’ni ishga tushirish rejalari haqida qanday fikrdasiz?
Bu loyihadan umidim katta
Men uning rivojlanishini qiziqish bilan kuzatib boraman.
Men shubhalanaman va uning muvaffaqiyatiga shubha qilaman.
Men bu tashabbusni muvaffaqiyatsiz va keng omma uchun keraksiz deb hisoblashga moyilman
47 foydalanuvchi ovoz berdi. 12 nafar foydalanuvchi betaraf qolgan.