ProHoster > Pūnaewele > Nā Administration > E pili ana i ke kākau ʻana a me ka hoʻolaha ʻana i kahi ʻaelike akamai ma ka Telegram Open Network (TON)
E pili ana i ke kākau ʻana a me ka hoʻolaha ʻana i kahi ʻaelike akamai ma ka Telegram Open Network (TON)
E pili ana i ke kākau ʻana a me ka hoʻolaha ʻana i kahi ʻaelike akamai ma TON
He aha kēia ʻatikala?
Ma ka ʻatikala e kamaʻilio wau e pili ana i koʻu komo ʻana i ka mua (o ʻelua) Telegram blockchain hoʻokūkū, ʻaʻole i lawe i kahi makana, a ua hoʻoholo e hoʻopaʻa i koʻu ʻike i loko o kahi ʻatikala i ʻole e komo i loko o ka poina a, kōkua paha. kekahi.
No ka mea ʻaʻole wau i makemake e kākau i nā code abstract, akā e hana i kahi hana, no ka ʻatikala ua kākau wau i kahi ʻaelike akamai no ka loteri koke a me kahi pūnaewele e hōʻike pololei ana i ka ʻikepili aelike mai TON me ka ʻole o ka hoʻohana ʻana i ka mālama waena.
Pono ka ʻatikala i ka poʻe makemake e hana i kā lākou ʻaelike akamai mua ma TON, akā ʻaʻole ʻike i kahi e hoʻomaka ai.
Ke hoʻohana nei i ka loteri ma ke ʻano he laʻana, e hele wau mai ka hoʻokomo ʻana i ke kaiapuni i ka paʻi ʻana i kahi ʻaelike akamai, ka launa pū ʻana me ia, a me ke kākau ʻana i kahi pūnaewele no ka loaʻa ʻana a me ka paʻi ʻana i ka ʻikepili.
E pili ana i ke komo ʻana i ka hoʻokūkū
ʻO ʻOkakopa i hala, ua hoʻolaha ʻo Telegram i kahi hoʻokūkū blockchain me nā ʻōlelo hou Fift и FunC. Pono e koho mai ke kākau ʻana i kekahi o nā ʻaelike akamai ʻelima i manaʻo ʻia. Manaʻo wau he mea maikaʻi ke hana ʻokoʻa, aʻo i ka ʻōlelo a hana i kekahi mea, ʻoiai inā ʻaʻole pono wau e kākau i kekahi mea ʻē aʻe i kēia mua aku. Eia kekahi, aia mau ke kumuhana ma nā lehelehe.
Pono e ʻōlelo ʻaʻohe oʻu ʻike i ka hoʻomohala ʻana i nā ʻaelike akamai.
Ua hoʻolālā wau e komo a hiki i ka hopena a hiki iaʻu ke kākau i kahi ʻatikala loiloi, akā hāʻule koke wau i ka mea mua. I kākau i ʻeke kālā me nā pūlima lehulehu FunC a ua hana maʻamau. Ua lawe au i kumu ʻaelike akamai ma Solidity.
I kēlā manawa, manaʻo wau ua lawa kēia no ka lawe ʻana i kahi wahi makana. ʻO ka hopena, ma kahi o 40 o 60 mau mea komo i lilo i makana a ʻaʻole wau i waena o lākou. Ma keʻano laulā, ʻaʻohe hewa o kēia, akā hoʻokahi mea i hoʻopilikia iaʻu. I ka manawa o ka hoʻolaha ʻana o nā hopena, ʻaʻole i hana ʻia ka loiloi o ka hoʻāʻo no kaʻu ʻaelike, ua nīnau au i ka poʻe i komo i ke kamaʻilio inā aia kekahi i loaʻa ʻole, ʻaʻohe.
Me he mea lā e hoʻolohe ana i kaʻu mau ʻōlelo, ʻelua lā ma hope mai ua paʻi nā luna kānāwai i kahi ʻōlelo a ʻaʻole maopopo iaʻu inā ua poina lākou i kaʻu ʻaelike akamai i ka wā o ka hoʻokolokolo ʻana a i ʻole manaʻo wale ʻia he mea ʻino loa ia ʻaʻole pono ka manaʻo. Ua nīnau au i kahi nīnau ma ka ʻaoʻao, ʻaʻole i loaʻa ka pane. ʻOiai ʻaʻole ia he mea huna nāna i hoʻokolokolo, ua manaʻo wau he mea pono ʻole ke kākau i nā leka pilikino.
Nui ka manawa i hoʻohana ʻia no ka hoʻomaopopo ʻana, no laila ua hoʻoholo ʻia e kākau i kahi ʻatikala. No ka mea ʻaʻole nui ka ʻike, e kōkua kēia ʻatikala e mālama i ka manawa no ka poʻe makemake.
ʻO ka manaʻo o nā ʻaelike akamai ma TON
Ma mua o kou kākau ʻana i kekahi mea, pono ʻoe e noʻonoʻo i ka ʻaoʻao hea e hoʻokokoke ai i kēia mea. No laila, i kēia manawa e haʻi aku wau iā ʻoe i nā ʻāpana o ka ʻōnaehana. ʻOi aku ka pololei, he aha nā ʻāpana āu e pono ai e ʻike i mea e kākau ai ma kahi liʻiliʻi o kekahi ʻano ʻaelike hana.
E kālele mākou i ke kākau ʻana i kahi ʻaelike akamai a me ka hana pū me TON Virtual Machine (TVM), Fift и FunC, no laila ua like ka ʻatikala me ka wehewehe ʻana i ka hoʻomohala ʻana i kahi papahana maʻamau. ʻAʻole mākou e noʻonoʻo i ka hana ʻana o ka paepae ma aneʻi.
Ma ka laulā e pili ana i ka hana TVM a me ka ʻōlelo Fift aia nā palapala kūhelu maikaʻi. ʻOiai e komo ana i ka hoʻokūkū a i kēia manawa ke kākau nei au i ka ʻaelike o kēia manawa, huli pinepine wau iā ia.
ʻO ka ʻōlelo nui i kākau ʻia ai nā ʻaelike akamai FunC. ʻAʻohe palapala e pili ana iā ia i kēia manawa, no laila, i mea e kākau ai i kahi mea pono ʻoe e aʻo i nā hiʻohiʻona o nā ʻaelike akamai mai ka waihona kūhelu a me ka hoʻokō ʻana o ka ʻōlelo ponoʻī ma laila, a hiki iā ʻoe ke nānā i nā hiʻohiʻona o nā ʻaelike akamai mai nā mea ʻelua i hala. nā hoʻokūkū. Nā loulou ma ka hope o ka ʻatikala.
E ʻōlelo mākou ua kākau mua mākou i kahi ʻaelike akamai no FunC, Ma hope o kēlā, hoʻohui mākou i ke code i Fift assembler.
E hoʻopuka ʻia ka ʻaelike akamai i hui ʻia. No ka hana ʻana i kēia, pono ʻoe e kākau i kahi hana ma Fift, ka mea e lawe i ke code ʻaelike akamai a me kekahi mau ʻāpana ʻē aʻe ma ke ʻano he hoʻokomo, a ʻo ka hopena e lilo i faila me ka hoʻonui .boc (ʻo ia hoʻi "ʻeke o nā cell"), a, ma muli o ke ʻano o kā mākou kākau ʻana, kahi kī pilikino a me ka helu wahi, i hana ʻia ma muli o ke code aelike akamai. Hiki iā ʻoe ke hoʻouna i nā grams i ka helu wahi o kahi ʻaelike akamai i paʻi ʻole ʻia.
No ka hoʻolaha ʻana i kahi ʻaelike akamai ma TON i loaʻa .boc Pono e hoʻouna ʻia ka faila i ka blockchain me ka hoʻohana ʻana i kahi mea kūʻai māmā (ʻoi aku ma lalo). Akā ma mua o ka paʻi ʻana, pono ʻoe e hoʻololi i nā grams i ka helu i hana ʻia, inā ʻaʻole e paʻi ʻia ka ʻaelike akamai. Ma hope o ka paʻi ʻana, hiki iā ʻoe ke launa pū me ka ʻaelike akamai ma ka hoʻouna ʻana iā ia i nā memo mai waho (e laʻana, me ka hoʻohana ʻana i ka mea kūʻai māmā) a i ʻole mai loko mai (no ka laʻana, hoʻouna kekahi ʻaelike akamai i kekahi memo i loko o TON).
Ke hoʻomaopopo mākou i ka paʻi ʻia ʻana o ke code, e maʻalahi ia. ʻIke maopopo mākou i kā mākou makemake e kākau a pehea e hana ai kā mākou papahana. A i ke kākau ʻana, ʻimi mākou i ke ʻano o ka hoʻokō ʻia ʻana o kēia i nā ʻaelike akamai i kēia manawa, a i ʻole mākou e nānā i ke code hoʻokō Fift и FunC i loko o ka waihona kūhelu, a i ʻole e nānā i ka palapala kūhelu.
Ua ʻimi pinepine au i nā huaʻōlelo ma ke kamaʻilio Telegram kahi i ʻākoakoa ai nā mea hoʻokūkū āpau a me nā limahana Telegram, a ua hiki mai i ka wā o ka hoʻokūkū ua ʻākoakoa nā mea a pau ma laila a hoʻomaka e kūkākūkā ʻo Fift a me FunC. Ka loulou ma ka hope o ka ʻatikala.
ʻO ka manawa kēia e neʻe ai mai ka manaʻo a i ka hoʻomaʻamaʻa.
Hoʻomākaukau i ke kaiapuni no ka hana pū me TON
Ua hana au i nā mea a pau e wehewehe ʻia ma ka ʻatikala ma MacOS a ʻelua-helu ʻia ma ka Ubuntu 18.04 LTS maʻemaʻe ma Docker.
ʻO ka mea mua e pono ai ʻoe e hoʻoiho a hoʻouka lite-client hiki iā ʻoe ke hoʻouna i nā noi iā TON.
ʻO nā ʻōlelo aʻoaʻo ma ka pūnaewele official e wehewehe i ke kaʻina hana i ka kikoʻī a me ka maopopo a haʻalele i kekahi mau kikoʻī. Maanei mākou e hahai ai i nā ʻōlelo aʻoaʻo, e kau ana i nā mea hilinaʻi i nalowale ma ke ala. ʻAʻole wau i hōʻuluʻulu i kēlā me kēia papahana iaʻu iho a hoʻokomo ʻia mai ka waihona waihona ʻo Ubuntu (ma MacOS aʻu i hoʻohana ai brew).
Ke kau ʻia nā mea hilinaʻi a pau hiki iā ʻoe ke hoʻouka lite-client, Fift, FunC.
ʻO ka mea mua, hoʻopili mākou i ka waihona TON me kona mau hilinaʻi. No ka maʻalahi, e hana mākou i nā mea a pau i loko o kahi waihona ~/TON.
cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursive
Mālama pū ka waihona i nā hoʻokō Fift и FunC.
I kēia manawa ua mākaukau mākou e hōʻuluʻulu i ka papahana. Hoʻopili ʻia ka code waihona i loko o kahi waihona ~/TON/ton. ka ~/TON hana i ka waihona build a hōʻiliʻili i ka papahana i loko.
mkdir ~/TON/build
cd ~/TON/build
cmake ../ton
No ka mea e kākau ana mākou i kahi ʻaelike akamai, ʻaʻole pono mākou lite-clientaka, Fift с FunC, no laila e hoʻohui kākou i nā mea a pau. ʻAʻole ia he hana wikiwiki, no laila ke kali nei mākou.
cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.json
Inā holomua ka kūkulu ʻana, a laila ma hope o ka hoʻomaka ʻana e ʻike ʻoe i kahi log o ka pilina o ka mea kūʻai māmā i ka node.
[ 1][t 2][1582054822.963129282][lite-client.h:201][!testnode] conn ready
[ 2][t 2][1582054823.085654020][lite-client.cpp:277][!testnode] server version is 1.1, capabilities 7
[ 3][t 2][1582054823.085725069][lite-client.cpp:286][!testnode] server time is 1582054823 (delta 0)
...
Hiki iā ʻoe ke holo i ke kauoha help a ʻike i nā kauoha i loaʻa.
help
E papa inoa i nā kauoha a mākou e hoʻohana ai ma kēia ʻatikala.
list of available commands:
last Get last block and state info from server
sendfile <filename> Load a serialized message from <filename> and send it to server
getaccount <addr> [<block-id-ext>] Loads the most recent state of specified account; <addr> is in [<workchain>:]<hex-or-base64-addr> format
runmethod <addr> [<block-id-ext>] <method-id> <params>... Runs GET method <method-id> of account <addr> with specified parameters
last получает последний созданный блок с сервера.
sendfile <filename> отправляет в TON файл с сообщением, именно с помощью этой команды публикуется смарт-контракт и запрсосы к нему.
getaccount <addr> загружает текущее состояние смарт-контракта с указанным адресом.
runmethod <addr> [<block-id-ext>] <method-id> <params> запускает get-методы смартконтракта.
I kēia manawa ua mākaukau mākou e kākau i ka ʻaelike ponoʻī.
Ka hoʻokō
Manaʻo
E like me kaʻu i kākau ai ma luna, ʻo ka ʻaelike akamai a mākou e kākau nei he lotiri.
Eia kekahi, ʻaʻole kēia he loteri kahi e pono ai ʻoe e kūʻai i kahi tiketi a kali i hoʻokahi hola, lā a i ʻole mahina, akā i kahi manawa e hoʻololi ai ka mea hoʻohana i ka helu ʻaelike. N grams, a hoʻihoʻi koke mai 2 * N grama a poho paha. E hana mākou i ka hiki ke lanakila ma kahi o 40%. Inā ʻaʻole lawa ka grams no ka uku, a laila e noʻonoʻo mākou i ke kālepa ma ke ʻano he top-up.
Eia kekahi, he mea nui e ʻike ʻia nā bets i ka manawa maoli a ma kahi ʻano kūpono, i hiki i ka mea hoʻohana ke hoʻomaopopo koke inā lanakila a nalowale paha. No laila, pono ʻoe e hana i kahi pūnaewele e hōʻike pololei i nā bets a me nā hopena mai TON.
Ke kākau ʻana i kahi ʻaelike akamai
No ka maʻalahi, ua hōʻike wau i ke code no FunC; hiki ke loaʻa a hoʻokomo ʻia ka plugin ma ka ʻimi Visual Studio Code; inā makemake koke ʻoe e hoʻohui i kekahi mea, ua hoʻolaha au i ka plugin. Eia kekahi, ua hana mua kekahi i kahi plugin no ka hana ʻana me Fift, hiki iā ʻoe ke hoʻouka a loaʻa iā ia ma VSC.
E hana koke mākou i kahi waihona kahi e hana ai mākou i nā hopena waena.
I mea e maʻalahi ai ko mākou ola, e kākau mākou i kahi ʻaelike akamai a hoʻāʻo iā ia ma ka ʻāina a hiki i ka mākaukau. Ma hope wale nō e hoʻolaha mākou ma TON.
Loaʻa i ka ʻaelike akamai ʻelua mau ala waho e hiki ke kiʻi ʻia. Ka mua, recv_external() Hoʻokō ʻia kēia hana ke hele mai kahi noi i ka ʻaelike mai ka honua waho, ʻo ia hoʻi, ʻaʻole mai TON, no ka laʻana, ke hoʻopuka nei mākou i kahi leka a hoʻouna ʻia ma o ka lite-client. Ka lua, recv_internal() ʻO kēia ka manawa, i loko o TON ponoʻī, pili kekahi ʻaelike i kā mākou. I nā hihia ʻelua, hiki iā ʻoe ke hāʻawi i nā ʻāpana i ka hana.
E hoʻomaka kākou me kahi hiʻohiʻona maʻalahi e hana inā paʻi ʻia, akā ʻaʻohe ukana hana i loko.
Maanei pono mākou e wehewehe i ke ʻano slice. ʻO nā ʻikepili āpau i mālama ʻia ma TON Blockchain he hōʻiliʻili TVM cell ole 'ole cell, i loko o ia pūnaewele hiki iā ʻoe ke mālama i 1023 bits o ka ʻikepili a hiki i 4 mau loulou i nā pūnaewele ʻē aʻe.
TVM cell slice ai ole ia, slice he hapa keia o ka mea e ku nei cell hoʻohana ʻia no ka hoʻopaʻa ʻana, e akaka ma hope. ʻO ka mea nui iā mākou, hiki iā mākou ke hoʻololi slice a ma muli o ke ʻano o ka memo, e hana i ka ʻikepili i loko recv_external() ai ole ia, recv_internal().
impure - he huaʻōlelo e hōʻike ana e hoʻololi ka hana i ka ʻikepili aelike akamai.
E mālama kākou i ke code aelike i loko lottery-code.fc a houluulu.
Ua hōʻuluʻulu mākou i Fift assembler code in lottery-compiled.fif:
// lottery-compiled.fif
"Asm.fif" include
// automatically generated from `/Users/rajymbekkapisev/TON/ton/crypto/smartcont/stdlib.fc` `./lottery-code.fc`
PROGRAM{
DECLPROC recv_internal
DECLPROC recv_external
recv_internal PROC:<{
// in_msg
DROP //
}>
recv_external PROC:<{
// in_msg
DROP //
}>
}END>c
Hiki ke hoʻokuʻu ʻia ma ka ʻāina, no kēia mea mākou e hoʻomākaukau ai i ke kaiapuni.
E hoʻomaopopo e pili ana ka laina mua Asm.fif, he code kēia i kākau ʻia ma Fift no ka Fift assembler.
No ka mea makemake mākou e holo a hoʻāʻo i ka ʻaelike akamai ma ka ʻāina, e hana mākou i kahi faila lottery-test-suite.fif a kope i ke code i hui ʻia ma laila, e hoʻololi i ka laina hope i loko, e kākau ana i ke code aelike akamai i kahi mau. codea laila e hoʻololi iā ia i ka mīkini virtual:
"TonUtil.fif" include
"Asm.fif" include
PROGRAM{
DECLPROC recv_internal
DECLPROC recv_external
recv_internal PROC:<{
// in_msg
DROP //
}>
recv_external PROC:<{
// in_msg
DROP //
}>
}END>s constant code
I kēia manawa ua maopopo, ʻānō e hoʻohui i ka faila hoʻokahi i ke code a mākou e hoʻohana ai e hoʻomaka i ka TVM.
В c7 hoʻopaʻa mākou i ka pōʻaiapili, ʻo ia hoʻi, ka ʻikepili e hoʻomaka ai ka TVM (a i ʻole ka mokuʻāina pūnaewele). ʻOiai i ka wā o ka hoʻokūkū, ua hōʻike kekahi o nā mea hoʻomohala pehea e hana ai c7 a ua kope au. Ma kēia ʻatikala pono mākou e hoʻololi rand_seed no ka mea, ua pili ka hanauna o kahi helu maʻamau a inā ʻaʻole hoʻololi ʻia, e hoʻihoʻi ʻia ka helu like i kēlā me kēia manawa.
recv_internal и recv_external ʻO nā constants me nā waiwai 0 a me -1 ke kuleana no ke kāhea ʻana i nā hana pili i ka ʻaelike akamai.
I kēia manawa ua mākaukau mākou e hana i ka hoʻāʻo mua no kā mākou ʻaelike akamai ʻole. No ka akaka, i kēia manawa e hoʻohui mākou i nā hoʻokolohua āpau i ka faila hoʻokahi lottery-test-suite.fif.
E hana kākou i mea hoʻololi storage a e kakau i ka mea nele iloko cell, ʻo ia ka mālama ʻaelike akamai.
message ʻO kēia ka ʻōlelo a mākou e hoʻouna aku ai i ke kelepona akamai mai waho. E hoʻonele mākou i kēia manawa.
Ma hope o ka hoʻomākaukau ʻana i nā mea mau a me nā mea hoʻololi, hoʻomaka mākou i ka TVM me ka hoʻohana ʻana i ke kauoha runvmctx a hāʻawi i nā ʻāpana i hana ʻia i ka hoʻokomo.
Nui, ua kākau mākou i ka mana hana mua o ka ʻaelike akamai.
I kēia manawa pono mākou e hoʻohui i ka hana. E hana mua kākou i nā memo e hele mai ana mai ka honua aku i recv_external()
Na ka mea hoʻomohala ponoʻī e koho i ke ʻano memo i hiki i ka ʻaelike ke ʻae.
Akā ma ka maʻamau
ʻO ka mea mua, makemake mākou e pale i kā mākou ʻaelike mai ka honua i waho a hana ia i hiki i ka mea nona ka ʻaelike ke hoʻouna i nā leka waho iā ia.
ʻO ka lua, ke hoʻouna mākou i kahi leka kūpono iā TON, makemake mākou e hana kēia i hoʻokahi manawa a ke hoʻouna hou mākou i ka leka like, hōʻole ka ʻaelike akamai.
No laila, kokoke i kēlā me kēia ʻaelike e hoʻoponopono i kēia mau pilikia ʻelua, no ka mea e ʻae kā mākou ʻaelike i nā leka o waho, pono mākou e mālama pū kekahi.
E hana mākou ma ka ʻaoʻao hope. ʻO ka mea mua, e hoʻoponopono i ka pilikia me ka hana hou ʻana; inā ua loaʻa i ka ʻaelike i kēlā memo a hoʻoponopono ʻia, ʻaʻole ia e hoʻokō i ka lua o ka manawa. A laila e hoʻoponopono mākou i ka pilikia i hiki i kahi pōʻai o nā kānaka ke hoʻouna i nā leka i ka ʻaelike akamai.
Aia nā ala ʻokoʻa e hoʻoponopono ai i ka pilikia me nā leka pālua. Eia pehea mākou e hana ai. Ma ka ʻaelike akamai, hoʻomaka mākou i ka counter o nā memo i loaʻa me ka waiwai mua 0. Ma kēlā me kēia memo i ka ʻaelike akamai, e hoʻohui mākou i ka waiwai kūʻē i kēia manawa. Inā ʻaʻole i kūlike ka waiwai kūʻē i ka memo i ka waiwai i loko o ka ʻaelike akamai, a laila ʻaʻole mākou e hana; inā pēlā, a laila mākou e hana a hoʻonui i ka counter ma ka ʻaelike akamai e 1.
E hoʻi kāua i lottery-test-suite.fif a hoʻohui i kahi hoʻāʻo ʻelua iā ia. Inā hoʻouna mākou i kahi helu hewa, pono e hoʻolei ke code i kahi ʻokoʻa. No ka laʻana, e waiho i ka waihona ʻikepili aelike 166, a e hoʻouna mākou iā 165.
<b 166 32 u, b> storage !
<b 165 32 u, b> message !
message @
recv_external
code
storage @
c7
runvmctx
drop
exit_code !
."Exit code " exit_code @ . cr
exit_code @ 33 - abort"Test #2 Not passed"
E hoʻomaka kākou.
~/TON/build/crypto/fift -s lottery-test-suite.fif
A e ʻike mākou ua hoʻokō ʻia ka hoʻāʻo me kahi hewa.
[ 1][t 0][1582283084.210902214][words.cpp:3046] lottery-test-suite.fif:67: abort": Test #2 Not passed
[ 1][t 0][1582283084.210941076][fift-main.cpp:196] Error interpreting file `lottery-test-suite.fif`: error interpreting included file `lottery-test-suite.fif` : lottery-test-suite.fif:67: abort": Test #2 Not passed
Ma kēia kahua lottery-test-suite.fif pono ke nana aku loulou.
I kēia manawa, e hoʻohui kākou i ka loiloi counter i ka ʻaelike akamai i loko lottery-code.fc.
() recv_internal(slice in_msg) impure {
;; TODO: implementation
}
() recv_external(slice in_msg) impure {
if (slice_empty?(in_msg)) {
return ();
}
int msg_seqno = in_msg~load_uint(32);
var ds = begin_parse(get_data());
int stored_seqno = ds~load_uint(32);
throw_unless(33, msg_seqno == stored_seqno);
}
В slice in_msg aia ka leka a mākou e hoʻouna ai.
ʻO ka mea mua a mākou e hana ai, ʻo ia ke nānā inā loaʻa ka ʻikepili i ka memo, inā ʻaʻole, a laila haʻalele wale mākou.
A laila hoʻopau mākou i ka memo. in_msg~load_uint(32) hoʻouka i ka helu 165, 32-bit unsigned int mai ka leka i hoʻouna ʻia.
A laila hoʻouka mākou i nā 32 bits mai ka mālama ʻaelike akamai. Nānā mākou i ka helu i hoʻouka ʻia i ka helu i hala; inā ʻaʻole, hoʻolei mākou i kahi ʻokoʻa. I kā mākou hihia, no ka mea ke hele nei mākou i kahi hoʻokūkū ʻole, pono ke kiola ʻia kahi ʻokoʻa.
E kope i ke code i loaʻa lottery-test-suite.fif, mai poina e pani i ka laina hope.
ʻIke mākou ua hala ka hōʻike:
~/TON/build/crypto/fift -s lottery-test-suite.fif
Ma ʻaneʻi Hiki iā ʻoe ke ʻike i ka commit pili me nā hopena o kēia manawa.
E hoʻomaopopo he mea paʻakikī ke kope mau i ke code i hōʻuluʻulu ʻia o kahi ʻaelike akamai i loko o kahi faila me nā hoʻāʻo, no laila e kākau mākou i kahi palapala e kākau i ke code i mea mau no mākou, a e hoʻopili wale mākou i ke code i hōʻuluʻulu ʻia i kā mākou hoʻāʻo me ka hoʻohana ʻana. "include".
E hana i kahi faila ma ka waihona papahana build.sh me keia mau mea.
I kēia manawa, e holo wale i kā mākou palapala e hōʻuluʻulu i ka ʻaelike. Akā ma waho aʻe o kēia, pono mākou e kākau iā ia i kahi mau code. No laila e hana mākou i kahi faila hou lotter-compiled-for-test.fif, a mākou e hoʻokomo i loko o ka faila lottery-test-suite.fif.
E hoʻohui i ka code skirpt i sh, e hoʻopālua wale i ka faila i hoʻohui ʻia lotter-compiled-for-test.fif a hoʻololi i ka laina hope i loko.
# copy and change for test
cp lottery-compiled.fif lottery-compiled-for-test.fif
sed '$d' lottery-compiled-for-test.fif > test.fif
rm lottery-compiled-for-test.fif
mv test.fif lottery-compiled-for-test.fif
echo -n "}END>s constant code" >> lottery-compiled-for-test.fif
I kēia manawa, e nānā, e holo kāua i ka ʻatikala hopena a e hana ʻia kahi faila lottery-compiled-for-test.fif, a mākou e hoʻokomo i loko o kā mākou lottery-test-suite.fif
В lottery-test-suite.fif holoi i ke code aelike a hoʻohui i ka laina "lottery-compiled-for-test.fif" include.
Holo mākou i nā hoʻāʻo e ʻike ua hala lākou.
~/TON/build/crypto/fift -s lottery-test-suite.fif
Nui, i kēia manawa no ka hoʻomaka ʻana i nā hoʻokolohua, e hana mākou i faila test.sh, ka mea e hoʻokō mua build.sh, a laila holo i nā hoʻokolohua.
E hana kāua test.sh a holo ia e hōʻoia i ka holo ʻana o nā hoʻokolohua.
chmod +x ./test.sh
./test.sh
Nānā mākou i ka hui ʻana o ka ʻaelike a ua hoʻokō ʻia nā hoʻokolohua.
Nui, i kēia manawa i ka hoʻomaka test.sh E hōʻuluʻulu ʻia nā hoʻokolohua a holo koke. Eia ka loulou i hoʻopaʻa.
ʻAe, ma mua o ka hoʻomau ʻana, e hana hou kāua no ka maʻalahi.
E hana kākou i waihona build kahi e mālama ai mākou i ka ʻaelike i kope ʻia a me kāna clone i kākau ʻia i loko o kahi mea mau lottery-compiled.fif, lottery-compiled-for-test.fif. E hana pū kākou i waihona test ma hea e waiho ai ka waihona hoʻāʻo? lottery-test-suite.fif a me nā faila kākoʻo ʻē aʻe paha. loulou i nā hoʻololi pili.
E hoʻomau kākou i ka hoʻomohala ʻana i ka ʻaelike akamai.
A laila pono e hoʻāʻo e nānā i ka loaʻa ʻana o ka leka a hoʻonui ʻia ka counter ma ka hale kūʻai ke hoʻouna mākou i ka helu pololei. Akā e hana mākou ma hope.
I kēia manawa, e noʻonoʻo kākou i ke ʻano o ka ʻikepili a me nā ʻikepili e pono e mālama ʻia i loko o ka ʻaelike akamai.
E wehewehe au i nā mea a pau a mākou e mālama ai.
`seqno` 32-х битное целое положительное число счетчик.
`pubkey` 256-ти битное целое положительное число публичный ключ, с помощью которого, мы будем проверять подпись отправленного извне сообщения, о чем ниже.
`order_seqno` 32-х битное целое положительное число хранит счетчик количества ставок.
`number_of_wins` 32-х битное целое положительное число хранит количество побед.
`incoming_amount` тип данных Gram (первые 4 бита отвечает за длину), хранит общее количество грамов, которые были отправлены на контртакт.
`outgoing_amount` общее количество грамов, которое было отправлено победителям.
`owner_wc` номер воркчейна, 32-х битное (в некоторых местах написано, что 8-ми битное) целое число. В данный момент всего два -1 и 0.
`owner_account_id` 256-ти битное целое положительное число, адрес контракта в текущем воркчейне.
`orders` переменная типа словарь, хранит последние двадцать ставок.
A laila pono ʻoe e kākau i ʻelua mau hana. E kāhea kākou i ka mea mua pack_state(), ka mea e hoʻopaʻa i ka ʻikepili no ka mālama ʻana ma hope o ka waihona ʻaelike akamai. E kāhea kākou i ka lua unpack_state() e heluhelu a hoʻihoʻi i ka ʻikepili mai kahi waihona.
_ pack_state(int seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) inline_ref {
return begin_cell()
.store_uint(seqno, 32)
.store_uint(pubkey, 256)
.store_uint(order_seqno, 32)
.store_uint(number_of_wins, 32)
.store_grams(incoming_amount)
.store_grams(outgoing_amount)
.store_int(owner_wc, 32)
.store_uint(owner_account_id, 256)
.store_dict(orders)
.end_cell();
}
_ unpack_state() inline_ref {
var ds = begin_parse(get_data());
var unpacked = (ds~load_uint(32), ds~load_uint(256), ds~load_uint(32), ds~load_uint(32), ds~load_grams(), ds~load_grams(), ds~load_int(32), ds~load_uint(256), ds~load_dict());
ds.end_parse();
return unpacked;
}
Hoʻohui mākou i kēia mau hana ʻelua i ka hoʻomaka ʻana o ka ʻaelike akamai. E holo pono ana like kela hopena waena.
No ka mālama ʻana i ka ʻikepili pono ʻoe e kāhea i ka hana i kūkulu ʻia set_data() a e kakau i ka ikepili mai pack_state() ma ka waihona aelike akamai.
I kēia manawa ua loaʻa iā mākou nā hana kūpono no ke kākau ʻana a me ka heluhelu ʻana i ka ʻikepili, hiki iā mākou ke neʻe.
Pono mākou e hōʻoia i ka hōʻailona o ka memo mai waho mai e ka mea nona ka ʻaelike (a i ʻole mea hoʻohana ʻē aʻe i loaʻa i ke kī pilikino).
Ke hoʻopuka mākou i kahi ʻaelike akamai, hiki iā mākou ke hoʻomaka me ka ʻikepili a mākou e pono ai i ka waiho ʻana, e mālama ʻia no ka hoʻohana e hiki mai ana. E hoʻopaʻa mākou i ke kī lehulehu ma laila i hiki iā mākou ke hōʻoia ua kau inoa ʻia ka memo e komo mai me ke kī pilikino pili.
Ma mua o ka hoʻomau ʻana, e hana kāua i kahi kī pilikino a kākau iā ia test/keys/owner.pk. No ka hana ʻana i kēia, e hoʻomaka kākou iā Fift ma ke ʻano pāʻani a hoʻokō i ʻehā mau kauoha.
`newkeypair` генерация публичного и приватного ключа и запись их в стек.
`drop` удаления из стека верхнего элемента (в данном случае публичный ключ)
`.s` просто посмотреть что лежит в стеке в данный момент
`"owner.pk" B>file` запись приватного ключа в файл с именем `owner.pk`.
`bye` завершает работу с Fift.
E hana kākou i waihona keys i loko o ka waihona test a kākau i ke kī pilikino ma laila.
mkdir test/keys
cd test/keys
~/TON/build/crypto/fift -i
newkeypair
ok
.s
BYTES:128DB222CEB6CF5722021C3F21D4DF391CE6D5F70C874097E28D06FCE9FD6917 BYTES:DD0A81AAF5C07AAAA0C7772BB274E494E93BB0123AA1B29ECE7D42AE45184128
drop
ok
"owner.pk" B>file
ok
bye
ʻIke mākou i kahi faila ma ka waihona o kēia manawa owner.pk.
Wehe mākou i ke kī lehulehu mai ka waihona a i ka wā e pono ai hiki iā mākou ke kiʻi mai ke kī pilikino.
I kēia manawa pono mākou e kākau i kahi hōʻoia pūlima. E hoʻomaka kākou me ka hoʻāʻo. Heluhelu mua mākou i ke kī pilikino mai ka faila me ka hoʻohana ʻana i ka hana file>B a e kakau ia mea ma kahi hoololi owner_private_key, a laila hoʻohana i ka hana priv>pub e hoʻololi i ke kī pilikino i kī lehulehu a kākau i ka hopena i loko owner_public_key.
Hoʻomaka mākou i ka mālama ʻana i ka ʻaelike akamai me ka ʻikepili arbitrary ma ke ʻano like me ka hana pack_state()a e kakau iho i mea hoololi storage.
Ma hope aʻe, e haku mākou i kahi memo i hoʻopaʻa inoa ʻia, aia wale nō ka pūlima a me ke kumu kūʻai.
ʻO ka mea mua, hana mākou i ka ʻikepili a mākou e makemake ai e hoʻouna, a laila hoʻopaʻa inoa mākou me kahi kī pilikino a hope mākou e hoʻopuka i kahi leka i kau inoa ʻia.
ʻO ka hopena, ua hoʻopaʻa ʻia ka memo a mākou e hoʻouna ai i ka ʻaelike akamai i kahi loli message_to_send, e pili ana i na hana hashu, ed25519_sign_uint hiki iā ʻoe ke heluhelu ma ka palapala ʻelima.
Eia nō Pono ke ʻano o ka faila me nā hoʻāʻo ma kēia pae.
E holo kāua i ka hoʻāʻo a hāʻule, no laila e hoʻololi mākou i ka ʻaelike akamai i hiki iā ia ke loaʻa nā memo o kēia ʻano a hōʻoia i ka pūlima.
ʻO ka mea mua, helu mākou i 512 mau ʻāpana o ka pūlima mai ka memo a kākau iā ia i kahi loli, a laila helu mākou i 32 mau ʻāpana o ka mea hoʻololi counter.
No ka mea he hana ko mākou no ka heluhelu ʻana i ka ʻikepili mai ka waihona ʻaelike akamai, e hoʻohana mākou.
ʻO ka mea aʻe e nānā i ka counter i hoʻoili ʻia me ka waiho ʻana a nānā i ka pūlima. Inā like ʻole kekahi mea, a laila hoʻolei mākou i kahi ʻokoʻa me ke code kūpono.
var signature = in_msg~load_bits(512);
var message = in_msg;
int msg_seqno = message~load_uint(32);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
throw_unless(33, msg_seqno == stored_seqno);
throw_unless(34, check_signature(slice_hash(in_msg), signature, pubkey));
E holo kāua i nā hoʻāʻo a ʻike i ka hāʻule ʻole o ka lua. No nā kumu ʻelua, ʻaʻole lawa nā bits i ka memo a ʻaʻole lawa nā bits i loko o ka waihona, no laila, hāʻule ke code i ka wā e hoʻopau ai. Pono mākou e hoʻohui i kahi pūlima i ka leka a mākou e hoʻouna nei a kope i ka waiho ʻana mai ka hōʻike hope loa.
Ma ka hoʻāʻo ʻelua, e hoʻohui mākou i kahi pūlima memo a hoʻololi i ka mālama ʻaelike akamai. Eia nō ʻO ka faila me nā hoʻāʻo e like me kēia manawa.
E kākau kākou i ka hā o ka ho'āʻo, kahi e hoʻouna aku ai mākou i kahi leka i pūlima ʻia me ke kī pilikino o kekahi. E hana kāua i kahi kī pilikino ʻē aʻe a mālama iā ia i kahi faila not-owner.pk. E pūlima mākou i ka memo me kēia kī pilikino. E holo kāua i nā hoʻāʻo a e hōʻoia i ka holo ʻana o nā hoʻokolohua āpau. Hāʻawi i keia manawa.
I kēia manawa hiki iā mākou ke neʻe hope i ka hoʻokō ʻana i ka logic contract smart.
В recv_external() e ʻae mākou i ʻelua ʻano memo.
No ka mea e hōʻiliʻili kā mākou ʻaelike i nā poho o nā mea pāʻani, pono e hoʻoili ʻia kēia kālā i ka mea nāna i hana i ka loteri. Hoʻopaʻa ʻia ka helu ʻeke kālā o ka mea nāna i hana i ka hailona ma ka waihona i ka wā i hana ʻia ai ka ʻaelike.
I ka hihia wale nō, pono mākou i ka hiki ke hoʻololi i ka helu wahi a mākou e hoʻouna ai i nā grams o ka poʻe nalo. Pono mākou e hoʻouna i nā grams mai ka loteri i ka helu o ka mea nona.
E hoʻomaka kākou me ka mea mua. E kākau mua i kahi ho'āʻo e nānā ai ma hope o ka hoʻouna ʻana i ka leka, ua mālama ka ʻaelike akamai i ka helu hou i loko o ka waihona. E ʻoluʻolu e hoʻomaopopo i ka memo, ma kahi o ka counter a me ka helu helu hou, hoʻouna pū mākou action ʻO kahi helu 7-bit integer non-negative, ma muli o ia, e koho mākou i ka hana ʻana i ka leka ma ka ʻaelike akamai.
<b 0 32 u, 1 @ 7 u, new_owner_wc @ 32 i, new_owner_account_id @ 256 u, b> message_to_sign !
I ka hoʻāʻo ʻana hiki iā ʻoe ke ʻike i ke ʻano o ka deserialized storage smartcontract storage i ʻElima. Hōʻike ʻia ka deserialization o nā ʻano like ʻole ma ka palapala ʻelima.
E holo kāua i ka hoʻāʻo a e hōʻoia i ka hāʻule. I kēia manawa, e hoʻohui kākou i ka loiloi e hoʻololi i ka helu wahi o ka mea nona ka loteri.
Ma ka ʻaelike akamai hoʻomau mākou i ka parse message, heluhelu mai action. E hoʻomanaʻo kākou e loaʻa iā kāua ʻelua action: hoʻololi i ka helu wahi a hoʻouna i nā grams.
A laila heluhelu mākou i ka helu hou o ka mea nona ka ʻaelike a mālama iā ia i loko o kahi waihona.
Holo mākou i nā ho'āʻo a ʻike ua hāʻule ke kolu o ka hoʻāʻo. Hāʻule ʻo ia ma muli o ka hoʻopili ʻana o ka ʻaelike i kēia manawa i nā 7 bits mai ka memo, i nalowale i ka hoʻāʻo. Hoʻohui i kahi mea ʻole i ka memo action. E holo kāua i nā hoʻokolohua a ʻike ua hala nā mea a pau. maanei hoʻopaʻa i nā hoʻololi. Nui.
I kēia manawa e kākau mākou i ka loiloi no ka hoʻouna ʻana i ka helu o nā grams i ka helu i mālama ʻia ma mua.
ʻO ka mua, e kākau kāua i hōʻike. E kākau mākou i ʻelua mau hoʻāʻo, hoʻokahi inā ʻaʻole lawa ke koena, ʻo ka lua ke holo pono nā mea āpau. Hiki ke nānā 'ia nā ho'ā'o ma keia hana.
I kēia manawa e hoʻohui i ke code. ʻO ka mua, e kākau kākou i ʻelua ala kōkua. ʻO ke ala loaʻa mua ka ʻike ʻana i ke koena o kēia manawa o kahi ʻaelike akamai.
int balance() inline_ref method_id {
return get_balance().pair_first();
}
A ʻo ka lua no ka hoʻouna ʻana i nā grams i kahi ʻaelike akamai ʻē aʻe. Ua kope loa au i kēia ʻano hana mai kahi ʻaelike akamai ʻē aʻe.
() send_grams(int wc, int addr, int grams) impure {
;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool src:MsgAddress -> 011000
cell msg = begin_cell()
;; .store_uint(0, 1) ;; 0 <= format indicator int_msg_info$0
;; .store_uint(1, 1) ;; 1 <= ihr disabled
;; .store_uint(1, 1) ;; 1 <= bounce = true
;; .store_uint(0, 1) ;; 0 <= bounced = false
;; .store_uint(4, 5) ;; 00100 <= address flags, anycast = false, 8-bit workchain
.store_uint (196, 9)
.store_int(wc, 8)
.store_uint(addr, 256)
.store_grams(grams)
.store_uint(0, 107) ;; 106 zeroes + 0 as an indicator that there is no cell with the data.
.end_cell();
send_raw_message(msg, 3); ;; mode, 2 for ignoring errors, 1 for sender pays fees, 64 for returning inbound message value
}
E hoʻohui kākou i kēia mau ʻano ʻelua i ka ʻaelike akamai a kākau i ka loiloi. ʻO ka mua, hoʻokaʻawale mākou i ka helu o nā grams mai ka memo. A laila nānā mākou i ke koena, inā ʻaʻole lawa mākou e hoʻolei i kahi ʻokoʻa. Inā maikaʻi nā mea a pau, a laila hoʻouna mākou i nā grams i ka helu i mālama ʻia a hoʻonui i ka counter.
Eia nō e like me ka ʻaelike akamai i kēia manawa. E holo kāua i nā hoʻāʻo a e hōʻoia i ko lākou hele ʻana.
Ma ke ala, ua unuhi ʻia kahi komisina mai ka ʻaelike akamai i kēlā me kēia manawa no kahi leka i hana ʻia. I mea e hoʻokō ai nā memo aelike akamai i ka noi, ma hope o nā loiloi kumu pono ʻoe e kelepona accept_message().
E neʻe kākou i nā memo kūloko. ʻO ka ʻoiaʻiʻo, e ʻae wale mākou i nā grams a hoʻihoʻi pālua i ka nui i ka mea pāʻani inā lanakila ʻo ia a ʻo ka hapakolu i ka mea nona ke nalo.
ʻO ka mua, e kākau kāua i kahi hoʻāʻo maʻalahi. No ka hana ʻana i kēia, pono mākou i kahi helu hoʻāʻo o ka ʻaelike akamai kahi e hoʻouna ai mākou i nā grams i ka ʻaelike akamai.
ʻElua mau helu ka helu ʻaelike akamai, he 32-bit integer kuleana no ka workchain a me ka 256-bit non-negative integer unique account number in this workchain. No ka laʻana, -1 a me 12345, ʻo ia ka helu wahi a mākou e mālama ai i kahi faila.
Ua kope au i ka hana no ka mālama ʻana i ka helu wahi mai TonUtil.fif.
// ( wc addr fname -- ) Save address to file in 36-byte format
{ -rot 256 u>B swap 32 i>B B+ swap B>file } : save-address
E nānā kākou i ka hana ʻana o ka hana, e hāʻawi kēia i ka hoʻomaopopo ʻana i ka hana ʻana o Fift. E hoʻolele i ka Fift ma ke ʻano pāʻani.
~/TON/build/crypto/fift -i
ʻO ka mua mākou e paʻi -1, 12345 a me ka inoa o ka faila e hiki mai ana "sender.addr" ma ka waihona:
-1 12345 "sender.addr"
ʻO ka hana aʻe e hoʻokō i ka hana -rot, ka mea e hoʻololi i ka hoʻopaʻa ʻana ma ke ʻano i loaʻa kahi helu aelike akamai kūʻokoʻa ma luna o ka waihona:
"sender.addr" -1 12345
256 u>B hoohuli i ka 256-bit non-negative integer i bytes.
A i ka hope ua kākau ʻia nā bytes i ka faila B>file. Ma hope o kēia, ua nele kā mākou waihona. Kū mākou Fift. Ua hana ʻia kahi faila ma ka waihona o kēia manawa sender.addr. E hoʻoneʻe i ka faila i ka waihona i hana ʻia test/addresses/.
E kākau mākou i kahi ho'āʻo maʻalahi e hoʻouna i nā grams i kahi ʻaelike akamai. Eia ka hana.
I kēia manawa, e nānā kākou i ke kumu o ka hailona.
ʻO ka mea mua a mākou e hana ai, ʻo ia ke nānā i ka memo bounced a i ole ina bounced, a laila haʻalele mākou iā ia. bounced 'o ia ho'i, e ho'iho'i ka 'aelike i ka grams inā loa'a kekahi hewa. ʻAʻole mākou e hoʻihoʻi i nā grams inā hiki koke mai kahi hewa.
Nānā mākou, inā ʻoi aku ka liʻiliʻi o ke koena ma mua o ka hapalua gram, a laila e ʻae wale mākou i ka leka a nānā ʻole.
A laila, hoʻokaʻawale mākou i ka helu o ka ʻaelike akamai kahi i hele mai ai ka leka.
Heluhelu mākou i ka ʻikepili mai ka waiho ʻana a laila holoi i nā bets kahiko mai ka mōʻaukala inā ʻoi aku ma mua o iwakālua o lākou. No ka maʻalahi, ua kākau wau i ʻekolu mau hana hou pack_order(), unpack_order(), remove_old_orders().
A laila, nānā mākou inā ʻaʻole lawa ke koena no ka uku, a laila manaʻo mākou ʻaʻole kēia he bet, akā he hoʻopiha a mālama i ka hoʻopiha ʻana i loko. orders.
A laila ʻo ke kumu o ka ʻaelike akamai.
ʻO ka mea mua, inā nalowale ka mea pāʻani, mālama mākou iā ia i ka mōʻaukala pili a inā ʻoi aku ka nui ma mua o 3 grams, hoʻouna mākou i ka 1/3 i ka mea nona ka ʻaelike akamai.
Inā lanakila ka mea pāʻani, a laila hoʻouna mākou i pālua i ka nui i ka helu o ka mea pāʻani a laila mālama i ka ʻike e pili ana i ka bet i ka mōʻaukala.
() recv_internal(int order_amount, cell in_msg_cell, slice in_msg) impure {
var cs = in_msg_cell.begin_parse();
int flags = cs~load_uint(4); ;; int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool
if (flags & 1) { ;; ignore bounced
return ();
}
if (order_amount < 500000000) { ;; just receive grams without changing state
return ();
}
slice src_addr_slice = cs~load_msg_addr();
(int src_wc, int src_addr) = parse_std_addr(src_addr_slice);
(int stored_seqno, int pubkey, int order_seqno, int number_of_wins, int incoming_amount, int outgoing_amount, int owner_wc, int owner_account_id, cell orders) = unpack_state();
orders = remove_old_orders(orders, order_seqno);
if (balance() < 2 * order_amount + 500000000) { ;; not enough grams to pay the bet back, so this is re-fill
builder order = pack_order(order_seqno, 1, now(), order_amount, src_wc, src_addr);
orders~udict_set_builder(32, order_seqno, order);
set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
return ();
}
if (rand(10) >= 4) {
builder order = pack_order(order_seqno, 3, now(), order_amount, src_wc, src_addr);
orders~udict_set_builder(32, order_seqno, order);
set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins, incoming_amount + order_amount, outgoing_amount, owner_wc, owner_account_id, orders));
if (order_amount > 3000000000) {
send_grams(owner_wc, owner_account_id, order_amount / 3);
}
return ();
}
send_grams(src_wc, src_addr, 2 * order_amount);
builder order = pack_order(order_seqno, 2, now(), order_amount, src_wc, src_addr);
orders~udict_set_builder(32, order_seqno, order);
set_data(pack_state(stored_seqno, pubkey, order_seqno + 1, number_of_wins + 1, incoming_amount, outgoing_amount + 2 * order_amount, owner_wc, owner_account_id, orders));
}
I kēia manawa he mea maʻalahi nā mea i koe, e hana mākou i nā ala kiʻi i hiki iā mākou ke loaʻa ka ʻike e pili ana i ke kūlana o ka ʻaelike mai ka honua waho (ʻoiaʻiʻo, heluhelu i ka ʻikepili mai kā lākou mālama ʻaelike akamai).
E hoʻohui i nā ala kiʻi. E kākau mākou ma lalo e pili ana i ka loaʻa ʻana o ka ʻike e pili ana i kahi ʻaelike akamai.
Ua poina iaʻu e hoʻohui i ke code e hoʻoponopono i ka noi mua loa i hana ʻia i ka wā e paʻi ana i kahi ʻaelike akamai. Hoʻoholo pili. A ʻoi aku hooponoponoia hewa me ka hoʻouna ʻana i ka 1/3 o ka nui i ka moʻokāki o ka mea nona.
ʻO ka hana aʻe e hoʻolaha i ka ʻaelike akamai. E hana kākou i waihona requests.
He mea pono e hoʻolohe. Hoʻokumu mākou i kahi mālama ʻaelike akamai a me kahi memo hoʻokomo. Ma hope o kēia, hana ʻia ka helu o ka ʻaelike akamai, ʻo ia hoʻi, ʻike ʻia ka helu ma mua o ka paʻi ʻana ma TON. A laila pono ʻoe e hoʻouna i kekahi mau grams i kēia helu wahi, a ma hope wale nō e pono ʻoe e hoʻouna i kahi faila me ka ʻaelike akamai ponoʻī, no ka mea, lawe ka pūnaewele i kahi komisina no ka mālama ʻana i ka ʻaelike akamai a me nā hana i loko (nā mea hōʻoia e mālama a hoʻokō i nā ʻaelike akamai. ). Hiki ke ʻike ʻia ke code ma aneʻi.
A laila hoʻokō mākou i ka code hoʻopuka a loaʻa lottery-query.boc waihona ʻaelike akamai a me ka helu wahi.
A e ʻike mākou ua nele ka moʻokāki me kēia helu wahi.
account state is empty
Hoʻouna mākou i ka helu wahi 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd 2 Gram a ma hope o kekahi mau kekona hoʻokō mākou i ke kauoha like. No ka hoʻouna ʻana i nā grams aʻu e hoʻohana ai pēke kūhelu, a hiki iā ʻoe ke nīnau i kekahi mai ke kamaʻilio ʻana no nā grams hoʻāʻo, aʻu e kamaʻilio e pili ana ma ka hopena o ka ʻatikala.
E hana kākou i nā noi e launa pū me ka ʻaelike akamai.
ʻOi aku ka pololei, e haʻalele mākou i ka mea mua no ka hoʻololi ʻana i ka helu wahi ma ke ʻano he hana kūʻokoʻa, a e hana mākou i ka lua no ka hoʻouna ʻana i nā grams i ka helu o ka mea nona. ʻOiaʻiʻo, pono mākou e hana like me ka hoʻāʻo no ka hoʻouna ʻana i nā grams.
ʻO kēia ka leka a mākou e hoʻouna ai i ka ʻaelike akamai, kahi msg_seqno 165, action 2 a me 9.5 grams no ka hoʻouna ʻana.
<b 165 32 u, 2 7 u, 9500000000 Gram, b>
Mai poina e kau inoa i ka memo me kāu kī pilikino lottery.pk, i hana ʻia ma mua i ka wā e hana ana i ka ʻaelike akamai. Eia ka hana pili.
Loaʻa ka ʻike mai kahi ʻaelike akamai me ka hoʻohana ʻana i nā ala get
I kēia manawa, e nānā kākou pehea e holo ai i nā ʻano hana kiʻi kiʻi akamai.
Hoʻolana lite-client a holo i ka get method a mākou i kākau ai.
E hoʻohana mākou i ka lite-client a loaʻa nā ala e hōʻike i ka ʻike e pili ana i ka ʻaelike akamai ma ka pūnaewele.
Hōʻike i ka ʻikepili aelike akamai ma ka pūnaewele
Ua kākau wau i kahi pūnaewele maʻalahi ma Python e hōʻike i ka ʻikepili mai ka ʻaelike akamai ma kahi ala kūpono. Maʻaneʻi,ʻaʻole wau e noʻonoʻo i ka kiko'ī a e hoʻolaha i ka pūnaewele ma ka hana hookahi.
Ua noi ʻia iā TON mai Python me ke kōkuaʻana o lite-client. No ka maʻalahi, ua hoʻopili ʻia ka pūnaewele ma Docker a paʻi ʻia ma Google Cloud. loulou.
Ke hoʻāʻo nei
I kēia manawa e ho'āʻo kāua e hoʻouna i nā grams i laila no ka hoʻopiha hou ʻana mai polopa. E hoʻouna mākou i 40 grams. A e hana kākou i ʻelua mau pili no ka maopopo. ʻIke mākou e hōʻike ana ka pūnaewele i ka mōʻaukala o nā bets, ka pākēneka lanakila o kēia manawa a me nā ʻike pono ʻē aʻe.
ʻIke mākouua lanakila mākou i ka mua, ua eo ka lua.
Ma hope o ka'ōlelo
Ua ʻoi aku ka lōʻihi o ka ʻatikala ma mua o kaʻu i manaʻo ai, ʻoi aku paha ka pōkole, a i ʻole no ke kanaka ʻike ʻole e pili ana iā TON a makemake e kākau a hoʻolaha i kahi ʻaelike akamai ʻaʻole maʻalahi me ka hiki ke launa pū me. ia. Ua wehewehe maʻalahi paha kekahi mau mea.
Malia paha ua hiki ke hana maikaʻi a nani hoʻi kekahi mau ʻano o ka hoʻokō ʻana, akā ua ʻoi aku ka nui o ka manawa e hoʻomākaukau ai i ka ʻatikala. Hiki paha iaʻu ke kuhi hewa ma kahi a ʻaʻole maopopo i kekahi mea, no laila inā e hana ana ʻoe i kahi mea koʻikoʻi, pono ʻoe e hilinaʻi i ka palapala mana a i ʻole ka waihona kūhelu me ka code TON.
Pono e hoʻomaopopo ʻia ʻoiai ʻo TON ponoʻī i loko o ka pae ikaika o ka hoʻomohala ʻana, hiki ke hoʻololi ʻia e wāwahi i kekahi o nā ʻanuʻu o kēia ʻatikala (i hana ʻia i koʻu kākau ʻana, ua hoʻoponopono ʻia ia), akā ʻo ke ala maʻamau. hiki ole ke loli.
ʻAʻole wau e kamaʻilio e pili ana i ka wā e hiki mai ana o TON. Malia paha e lilo ka paepae i mea nui a pono mākou e hoʻolimalima manawa e aʻo ai a hoʻopiha i kahi niche me kā mākou huahana i kēia manawa.
Aia pū kekahi Libra mai Facebook, nona ka lehulehu o nā mea hoʻohana ma mua o TON. ʻAʻohe oʻu ʻike e pili ana i ka Libra, no ka hoʻoholo ʻana ma ka ʻaha kūkā, ʻoi aku ka nui o nā hana ma laila ma mua o ke kaiāulu TON. ʻOiai ʻoi aku ka like o nā mea hoʻomohala a me ke kaiāulu o TON ma lalo o ka honua, ʻo ia hoʻi ka ʻoluʻolu.
E kamaʻilio e pili ana iā TON ma Telegram, i kōkua maoli e noʻonoʻo i ka pae mua. Manaʻo wau ʻaʻole ia he kuhihewa inā ʻōlelo wau aia nā mea a pau i kākau i kekahi mea no TON. Hiki iā ʻoe ke noi i nā grams hoʻāʻo ma laila. https://t.me/tondev_ru