แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แฃแแแ แแแฌแแ แแ แแ แแแแแแฅแแแงแแแ แญแแแแแแ แแแแขแ แแฅแขแ TON-แจแ
แ แแแแ แแก แกแขแแขแแ?
แกแขแแขแแแจแ แแแกแแฃแแ แแ แแแแแ, แแฃ แ แแแแ แแแแแฆแ แแแแแฌแแแแแแ Telegram-แแก แแแแแฉแแแแแก แแแ แแแ (แแ แแแแ) แแแแแฃแ แกแจแ, แแ แแแแฆแ แแ แแแ แแ แแแแแแฌแงแแแขแ แกแขแแขแแแจแ แฉแแแแฌแแ แ แแแแแชแแแแแแ, แ แแแ แแก แแ แฉแแแซแแ แแก แแแแแฌแงแแแแจแ แแ, แจแแกแแซแแแ, แแแแแฎแแแ แแก แแแแแแก.
แแแแก แแแแ, แ แแ แแ แแแแแแแ แแแกแขแ แแฅแขแฃแแ แแแแแก แแแฌแแ แ, แแแแ แแ แ แแฆแแช แกแแแฃแจแแแก แแแแแแแแ, แกแขแแขแแแกแแแแก แแแแฌแแ แ แแงแแกแแแ แ แแแขแแ แแแก แญแแแแแแ แแแแขแ แแฅแขแ แแ แแแแกแแแขแ, แ แแแแแแช แแฉแแแแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแชแแแแแก แแแ แแแแแ TON-แแแ แจแฃแแแแแฃแ แ แจแแแแฎแแแก แแแ แแจแ.
แกแขแแขแแ แกแแกแแ แแแแแ แแฅแแแแ แแแแแแแก, แแแกแแช แกแฃแ แก แแแแแก แแแแแกแ แแแ แแแแ แญแแแแแแ แแแแขแ แแฅแขแ TON-แจแ, แแแแ แแ แแ แแชแแก แกแแแแแ แแแแฌแงแแก.
แแแขแแ แแแก แแแแแแแแแก แแแแแงแแแแแแ, แแ แแแแแแแ แแแ แแแแก แแแงแแแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแฅแแแงแแแแแแแ, แแแกแแแ แแแขแแ แแฅแชแแแแ แแ แแแแแชแแแแแแก แแแฆแแแแกแ แแ แแแแแฅแแแงแแแแแก แกแแแขแแก แแแฌแแ แแแ.
แแแแแฃแ แกแจแ แแแแแฌแแแแแแแก แจแแกแแฎแแ
แแแกแฃแ แแฅแขแแแแแ แจแ Telegram-แแ แแแแแแชแฎแแแ แแแแแฉแแแแแก แแแแแฃแ แกแ แแฎแแแ แแแแแแ Fift
ะธ FunC
. แกแแญแแ แ แแงแ แแ แฉแแแแแแก แแแแแแแแ แฎแฃแแ แจแแแแแแแแแแแฃแแ แญแแแแแแ แแแแขแ แแฅแขแแแแ แ แแแแแแแแก แแแกแแฌแแ แแ. แแ แแแแฎแแแ, แ แแ แแแ แแ แแฅแแแแแแ แ แแแแ แฃแฉแแแฃแแ แแแแแแแแแแแแ, แแแ แแแกแฌแแแแ แแ แ แแฆแแช แแแแแแแแ, แแฃแแแแช แแแแแแแแจแ แกแฎแแ แ แแแแก แแแฌแแ แ แแ แแแแแฌแแแก. แแแ แแ แแแแกแ, แแแแ แแฃแแแแแแ แแกแแแก.
แแฆแกแแแแจแแแแแ, แ แแ แแ แแ แแฅแแแแ แแแแแชแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแแแก แจแแแฃแจแแแแแแจแ.
แแแแแแแ แแแแแแแแแ แแแแแฌแแแแแแแก, แ แแแแแแแแแช แแแแแแแแ แแ แแแ แ แแแแแฎแแแแแก แกแขแแขแแ แแแแฌแแ แ, แแแแ แแ แแแ แแแแแ แแแจแแแแ แฉแแแแแ แแ. แแ FunC
แแ แแแแแแแ แแฃแจแแแแแ. แกแแคแฃแซแแแแ แแแฆแ
แแ แแ แแก แแคแแฅแ แแแแ, แ แแ แแก แแแแแแแแแ แกแแแแแ แแกแ แแงแ แกแแแ แแแ แแแแแแแก แแแกแแแแแแแแแ. แจแแแแแแ, 40 แแแแแฌแแแแแแ 60-แแแ แแแแแ แฏแแแแฃแแ แแแฎแแ แแ แแแ แจแแ แแก แแ แแ แแงแแคแแแแแ . แแแแแแแ, แแก แแ แแคแแ แแ แกแแจแแแแแ, แแแแ แแ แแ แแ แ แแ แแแแแซแแแ. แจแแแแแแแแก แแแแแชแฎแแแแแแก แแ แแก แฉแแแ แแแแขแ แแฅแขแแก แขแแกแขแแ แจแแแแฌแแแแ แแ แแแแแแแแฃแแ, แฉแแขแจแ แแแแแฌแแแแแแก แแแแแฎแ, แแงแ แแฃ แแ แ แแแแแ, แแแกแแช แแ แฐแฅแแแแ, แแ แแงแ.
แ แแแแ แช แฉแแแก, แฉแแแก แจแแขแงแแแแแแแแแก แ แแ แแแแฅแชแแแก แงแฃแ แแแฆแแแ, แแ แ แแฆแแก แจแแแแแ แแกแแฏแแแแ แแแแแแฅแแแงแแแก แแแแแแขแแ แ แแ แแ แแแแแช แแแ แแแแแแ, แแแ แจแแแแฎแแแแแ แแแแแขแแแแก แฉแแแ แญแแแแแแ แแแแขแ แแฅแขแ แแแแกแฏแแก แแ แแก, แแ แฃแแ แแแแ แฉแแแแแแแก, แ แแ แแก แแแแแแแ แชแฃแแ แแงแ, แ แแ แแแแแแขแแ แ แแ แกแญแแ แแแแแแ. แแแแ แแแ แแแแกแแ แแแแฎแแ, แแแแ แแ แแแกแฃแฎแ แแ แแแแแฆแแ. แแฃแแชแ แแแ แแแแแแแแฎแ แกแแแแฃแแแ แแ แแ แแก, แแแแแแขแแ แแแแแฉแแแ แแแ แแแ แแแกแแฏแแแแก แแแฌแแ แ.
แแแแ แแ แ แแแแฎแแ แฏแ แแแแแแแแ, แแแแขแแ แแแแแฌแงแแ แกแขแแขแแแก แแแฌแแ แ. แแแแก แแแแ, แ แแ แฏแแ แแ แแ แแก แแแแ แ แแแคแแ แแแชแแ, แกแขแแขแแ แแแแแฎแแแ แแแแ แแแแแแแ แแ แ แงแแแแ แแแแแขแแ แแกแแแฃแแแกแแแแก.
แญแแแแแแ แแแแขแ แแฅแขแแแแก แแแแชแแคแชแแ TON-แจแ
แกแแแแ แ แแแแก แแแฌแแ , แฃแแแ แแแแ แแแแ, แ แแแแ แแฎแแ แแก แฃแแแ แแแฃแแแ แแ แกแแแแแฎแก แกแแแ แแแ. แแแแขแแ, แแฎแแ แแแขแงแแแ, แ แ แแแฌแแแแแแกแแแ แจแแแแแแ แกแแกแขแแแ. แฃแคแ แ แแฃแกแขแแ, แ แ แแแฌแแแแแ แฃแแแ แแชแแแแ, แ แแ แแแแแแฃแ แ แแแแ แกแแฎแแก แกแแแฃแจแแ แฎแแแจแแแ แฃแแแแ แแแฌแแ แแ.
แฉแแแ แงแฃแ แแแฆแแแแก แแแแแแแฎแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแฌแแ แแแ แแ แแแกแแแ แแฃแจแแแแแแ TON Virtual Machine (TVM)
, Fift
ะธ FunC
, แแกแ แ แแ, แกแขแแขแแ แฃแคแ แ แฐแแแแก แฉแแแฃแแแแ แแแ แแ แแแ แแแแก แจแแแฃแจแแแแแแก แแฆแฌแแ แแก. แฉแแแ แแ แแแกแแฃแแ แแแ แแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แแแแแ แแแแขแคแแ แแ แแฅ.
แแแแแแแ แแแแแ, แแฃ แ แแแแ แแฃแจแแแแก TVM
แแ แแแ Fift
แแ แแก แแแ แแ แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ. แแแแแฃแ แกแจแ แแแแแฌแแแแแแแก แแ แแก แแ แแฎแแ แแแฅแแแแ แแแแขแ แแฅแขแแก แแแฌแแ แแกแแก แฎแจแแ แแ แแแแแแ แแแแแ แแแก.
แแแแแแ แ แแแ, แ แแแแแแแช แญแแแแแแ แแแแขแ แแฅแขแแแ แแฌแแ แแแ แแ แแก FunC
. แแ แแ แแแกแแแแก แแแกแแ แแ แแแแแ แ แแแแฃแแแแขแแชแแ แแ แแ แแก, แแกแ แ แแ, แ แแฆแแชแแก แแแกแแฌแแ แแ, แแฅแแแ แฃแแแ แจแแแกแฌแแแแแ แกแแแ แข แแแแขแ แแฅแขแแแแก แแแแแแแแแแ แแคแแชแแแแฃแ แ แกแแชแแแแแแ แแ แแแแแ แแแแก แแแแฎแแ แชแแแแแแ, แแกแแแ แจแแแแซแแแแ แฃแงแฃแ แแ แญแแแแแแ แแแแขแ แแฅแขแแแแก แแแแแแแแแแก แแแแ แแ แ แแแแแฃแ แกแแกแแแแก. แแแแแแแ แกแขแแขแแแก แแแแแก.
แแแแฃแจแแแ, แฉแแแ แฃแแแ แแแแฌแแ แแ แญแแแแแแ แแแแขแ แแฅแขแ FunC
, แแแแก แจแแแแแ แฉแแแ แแแแ แแแแแ แแแแก Fift แแกแแแแแแ แจแ.
แจแแแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแ แฏแแ แแแแแ แแแแแกแแฅแแแงแแแแแแแ. แแแแกแแแแแก แแฅแแแ แฃแแแ แแแฌแแ แแ แคแฃแแฅแชแแ Fift
, แ แแแแแแช แแแแฆแแแก แกแแแ แข แแแแขแ แแฅแขแแก แแแแก แแ แแแแแแ แ แกแฎแแ แแแ แแแแขแ แก แจแแงแแแแแ, แฎแแแ แแแแแแแแแแ แแฅแแแแ แคแแแแ แแแคแแ แแแแแแ .boc
(แ แแช แแแจแแแแก "แฃแฏแ แแแแแแก แขแแแแ แแก") แแ, แแแแกแแ แแแฎแแแแแ, แแฃ แ แแแแ แแแแฌแแ แ แแแก, แแแ แแแ แแแกแแฆแแแ แแ แแแกแแแแ แแ, แ แแแแแแช แแแแแ แแ แแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแก แกแแคแฃแซแแแแแ. แแ แแแแแ แฃแแแ แจแแแซแแแแ แแแแแแแแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแแ, แ แแแแแแช แฏแแ แแ แแ แแก แแแแแฅแแแงแแแแฃแแ.
แขแแแจแ แแแฆแแแฃแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแฅแแแงแแแแ .boc
แคแแแแ แฃแแแ แแแแแแแแแแก แแแแแฉแแแแจแ แแกแฃแแฃแฅแ แแแแแแขแแก แแแแแงแแแแแแ (แแแฌแแ แแแแแแ แแแแก แจแแกแแฎแแ แฅแแแแแ). แแฆแแแ แแแแแฅแแแงแแแแแแแ แกแแญแแ แแ แแ แแแแแแก แแแแแขแแแ แแแแแ แแ แแแฃแ แแแกแแแแ แแแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แกแแแ แข แแแแขแ แแฅแขแ แแ แแแแแฅแแแงแแแแแ. แแแแแฅแแแงแแแแแก แจแแแแแ, แจแแกแแซแแแแแแ แแฅแแแแ แกแแแ แข แแแแขแ แแฅแขแแแ แฃแ แแแแ แแแแ แแแ แแแแ (แแแแแแแแแ, แแกแฃแแฃแฅแ แแแแแแขแแก แแแแแงแแแแแแ) แแ แจแแแแแแแ (แแแแแแแแแ, แแ แแ แญแแแแแแ แแแแขแ แแฅแขแ แแแแ แแก แแแแแแแก แจแแขแงแแแแแแแแก TON-แแก แจแแแแแ).
แแแก แจแแแแแ แ แแช แแแแแแแแ, แ แแแแ แฅแแแงแแแแแ แแแแ, แฃแคแ แ แแแแแแ แฎแแแแ. แฉแแแ แแแแฎแแแแแแ แแแชแแ, แ แแกแ แแแฌแแ แ แแแแแแ แแ แ แแแแ แแแฃแจแแแแแก แฉแแแแ แแ แแแ แแแ. แแ แฌแแ แแกแแก แแแซแแแ แแฃ แ แแแแ แแ แแก แแก แฃแแแ แแแแแ แแแแ แแ แกแแแฃแ แกแแแ แข แแแแขแ แแฅแขแแแจแ, แแ แแแแแแแแแ แแแ แแแแฎแแ แชแแแแแแแก แแแแก Fift
ะธ FunC
แแคแแชแแแแฃแ แกแแชแแแจแ, แแ แแแแแฎแแแแ แแคแแชแแแแฃแ แแแแฃแแแแขแแชแแแก.
แซแแแแแ แฎแจแแ แแ แแแซแแแแ แกแแแแแแซแ แกแแขแงแแแแก Telegram-แแก แฉแแขแจแ, แกแแแแช แแแ แแแแแแแแแ แแแแแฃแ แกแแก แงแแแแ แแแแแฌแแแ แแ Telegram-แแก แแแแแแจแ แแแแแแ, แแแ แจแแ แแก, แแกแ แแแฎแแ, แ แแ แแแแแฃแ แกแแก แแ แแก แงแแแแ แแฅ แจแแแแ แแแ แแ แแแแฌแงแ Fift-แแกแ แแ FunC-แแก แแแแฎแแแแ. แแแฃแแ แกแขแแขแแแก แแแแแก.
แแ แแ แแแแแแแแแ แแแแ แแแแแ แแ แแฅแขแแแแจแ.
แแแ แแแแก แแแแแแแแแ TON-แแแ แแฃแจแแแแแกแแแแก
แงแแแแแคแแ แ, แ แแช แแฆแฌแแ แแแ แแฅแแแแ แกแขแแขแแแจแ, แ แแช แแแแแแแแ MacOS-แแ แแ แแ แฏแแ แจแแแแแแฌแแ แกแฃแคแแ Ubuntu 18.04 LTS-แจแ Docker-แแ.
แแแ แแแแ แ แแช แฃแแแ แแแแแแแแ แแ แแก แฉแแแแขแแแ แแแ แแ แแแกแขแแแแชแแ lite-client
แ แแแแแแแช แจแแแแซแแแแ แแแแแแแแแ แแแแฎแแแแแแ TON-แจแ.
แแคแแชแแแแฃแ แแแแกแแแขแแ แแแแแแแกแแแฃแแ แแแกแขแ แฃแฅแชแแแแ แแแขแแแฃแ แแ แแ แแแแแแ แแฆแฌแแ แก แแแกแขแแแแชแแแก แแ แแชแแกแก แแ แแแแแขแแแแแก แแแแแแ แ แแแขแแแก. แแฅ แฉแแแ แแแแงแแแแแ แแแกแขแ แฃแฅแชแแแแก แแแแแ, แแแแแงแแแแ แแแแแ แแฃแแ แแแแแแแแแแฃแแแแแแ. แแ แแ แจแแแแแแแแ แแแแแแฃแแ แแ แแแฅแขแ แแ แแแแแแ แแ แแแแแแแกแขแแแแ แ Ubuntu-แก แแคแแชแแแแฃแ แ แกแแชแแแแแแ (แแ แแแงแแแแแแ MacOS-แแ brew
).
apt -y install git
apt -y install wget
apt -y install cmake
apt -y install g++
apt -y install zlib1g-dev
apt -y install libssl-dev
แงแแแแ แแแแแแแแแแฃแแแแแก แแแงแแแแแแก แจแแแแแ, แจแแแแซแแแแ แแแแแแกแขแแแแ แแ lite-client
, Fift
, FunC
.
แแแ แแแ แ แแแจแ, แฉแแแ แแแแแแแ TON-แแก แกแแชแแแก แแแแแแแแแแฃแแแแแแแแ แแ แแแ. แแแฎแแ แฎแแแฃแแแแแกแแแแก แงแแแแแคแแ แก แแแแแแแแแแ แกแแฅแแฆแแแแแจแ ~/TON
.
cd ~/TON
git clone https://github.com/ton-blockchain/ton.git
cd ./ton
git submodule update --init --recursive
แกแแชแแแ แแกแแแ แแแแฎแแแก แแแแฎแแ แชแแแแแแแแก Fift
ะธ FunC
.
แแฎแแ แฉแแแ แแแแ แแแ แ แแ แแแฅแขแแก แแกแแจแแแแแแแ. แกแแชแแแแก แแแแ แแแแแแ แแแฃแแแ แกแแฅแแฆแแแแแจแ ~/TON/ton
. In ~/TON
แกแแฅแแฆแแแแแก แจแแฅแแแ build
แแ แจแแแแ แแแแ แแ แแแฅแขแ แแแกแจแ.
mkdir ~/TON/build
cd ~/TON/build
cmake ../ton
แแแแแแแแ แฉแแแ แแแแแ แแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแฌแแ แแก, แฉแแแ แแแญแแ แแแแ แแ แ แแฎแแแแ lite-client
แแแแ แแ Fift
ั FunC
แแกแ แ แแ, แฉแแแ แแแแ แแแแแ แงแแแแแคแแ แก. แแ แแ แแก แกแฌแ แแคแ แแ แแชแแกแ, แแแแขแแ แแแแแแแแแ.
cmake --build . --target lite-client
cmake --build . --target fift
cmake --build . --target func
แจแแแแแแ, แฉแแแแขแแแ แแแ แแแแคแแแฃแ แแชแแแก แคแแแแ, แ แแแแแแช แจแแแชแแแก แแแแแชแแแแแก แแแแแซแแก แจแแกแแฎแแ lite-client
แแแแแแแจแแ แแแก.
wget https://test.ton.org/ton-lite-client-test1.config.json
แแแ แแแแ แแแแฎแแแแแแแก แแแแแแ TON-แจแ
แแฎแแ แแแแแฅแชแแ lite-client
.
cd ~/TON/build
./lite-client/lite-client -C ton-lite-client-test1.config.json
แแฃ แแจแแแแแ แฌแแ แแแขแแแฃแแ แแงแ, แแแจแแ แแแจแแแแแก แจแแแแแ แแแฎแแแ แแแแฃแ แแแแแแขแแก แแแแจแแ แแก แแฃแ แแแแก แแแแแซแแแ.
[ 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)
...
แจแแแแซแแแแ แแแฃแจแแแ แแ แซแแแแแ help
แแ แแแฎแแ แ แ แแ แซแแแแแแแแ แฎแแแแแกแแฌแแแแแ.
help
แแแแแ แฉแแแแแแแแแแ แแ แซแแแแแแแ, แ แแแแแแกแแช แแแแแแแงแแแแแ แแ แกแขแแขแแแจแ.
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-ะผะตัะพะดั ัะผะฐััะบะพะฝััะฐะบัะฐ.
แแฎแแ แฉแแแ แแแแ แแแ แ แแแแแ แแแแฌแแ แแ แแแแขแ แแฅแขแ.
ะ ะตะฐะปะธะทะฐัะธั
แแแแ
แ แแแแ แช แแแแแ แแแแฌแแ แ, แญแแแแแแ แแแแขแ แแฅแขแ, แ แแแแแกแแช แแฌแแ แ, แแแขแแ แแแ.
แฃแคแ แ แแแขแแช, แแก แแ แแ แแก แแแขแแ แแ, แ แแแแแจแแช แฃแแแ แแงแแแแ แแแแแแ แแ แแแแแแแแ แกแแแแก, แแฆแแก แแ แแแแก, แแ แแแแ แแงแแกแแแ แ, แ แแแแแจแแช แแแแฎแแแ แแแแแ แแแแแแแก แแแแขแ แแฅแขแแก แแแกแแแแ แแแ. N
แแ แแแ แแ แแงแแกแแแ แแ แฃแแ แฃแแแแแ 2 * N
แแ แแแ แแ แแแ แแแแก. แแแแแ แฏแแแแแก แแแแแแแแแก แแแแฎแแแแแแ 40% แแแแฎแแแ. แแฃ แแ แแ แแก แกแแแแแ แแกแ แแ แแแ แแแแแฎแแแกแแแแก, แแแจแแ แฉแแแ แแแแแแฎแแแแแ แขแ แแแแแฅแชแแแก, แ แแแแ แช แจแแแกแแแแก.
แฃแคแ แ แแแขแแช, แแแแจแแแแแแแแแแ, แ แแ แคแกแแแแแ แแแฎแแ แ แแแแฃแ แแ แแจแ แแ แแแฎแแ แฎแแแฃแแแ, แ แแแ แแแแฎแแแ แแแแแแ แแแฃแงแแแแแแแแ แแแแแแก, แแแแแ แแฃ แฌแแแแ. แแแแขแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ แแแแแแแ แแ, แ แแแแแแช แแฉแแแแแแก แขแแ แแคแแแก แแ แจแแแแแก แแแ แแแแแ TON-แแแ.
แญแแแแแแ แแแแขแ แแฅแขแแก แแแฌแแ แ
แแแฎแแ แฎแแแฃแแแแแกแแแแก แแแแแแแแ แแแแแก แฎแแแแแกแแ FunC-แกแแแแก, แแแแฃแแ แจแแแแซแแแแ แแแแแแ แแ แแแแแแกแขแแแแ แแ Visual Studio Code-แแก แซแแแแแจแ, แแฃ แแแฃแแแแแแแแ แแกแฃแ แ แ แแแแแก แแแแแขแแแ, แแแจแแ แแ แแแแแแแฅแแแงแแ แแแแแแแขแ แกแแฏแแ แ แแแแแแจแ. แแกแแแ, แแแแแแ แแแ แ แแแแแแแ แแแแฃแแ Fift-แแแ แแฃแจแแแแแกแแแแก, แแกแแแ แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แแ แแแแแแ แแแ VSC-แจแ.
แแแฃแงแแแแแแแแ แจแแฅแแแแแ แกแแชแแแ, แกแแแแช แจแฃแแแแแฃแ แจแแแแแแแก แแแแแฆแแแ.
แฉแแแแ แชแฎแแแ แแแแก แแแกแแแแแแแแแแแ, แฉแแแ แแแแฌแแ แ แญแแแแแ แแแแขแ แแฅแขแก แแ แจแแแแแแฌแแแแ แแแแแแแแ แแแแ, แกแแแแ แแก แแแแ แแฅแแแแ. แแฎแแแแ แแแแก แจแแแแแ แแแแแแแฅแแแงแแแแ แแแก TON-แจแ.
แกแแแ แข แแแแขแ แแฅแขแก แแฅแแก แแ แ แแแ แ แแแแแแ, แ แแแแแแแแช แฌแแแแแ แจแแแซแแแแ. แฒแแ แแแแ, recv_external()
แแก แคแฃแแฅแชแแ แจแแกแ แฃแแแแฃแแแ แแแจแแ, แ แแแแกแแช แแแแขแ แแฅแขแแก แแแแฎแแแแ แแแแแก แแแ แ แกแแแงแแ แแแแ, แแแฃ แแ แ TON-แแแ, แแแแแแแแแ, แ แแแแกแแช แฉแแแ แแแแแแ แแฅแแแแ แจแแขแงแแแแแแแแก แแ แแแแแแแแแ แแแก lite-client-แแก แกแแจแฃแแแแแแ. แแแแ แ, recv_internal()
แแก แแ แแก แแแจแแ, แ แแแแกแแช, แแแแแ TON-แแก แจแแแแแ, แแแแแกแแแแ แ แแแแขแ แแฅแขแ แแฎแแแ แฉแแแแก แฎแแแจแแแ แฃแแแแแก. แแ แแแ แจแแแแฎแแแแแจแ, แแฅแแแ แจแแแแซแแแแ แแแแแกแชแแ แแแ แแแแขแ แแแ แคแฃแแฅแชแแแก.
แแแแแฌแงแแ แแแ แขแแแ แแแแแแแแแ, แ แแแแแแช แแแแแฅแแแงแแแแแก แจแแแแฎแแแแแจแ แแแฃแจแแแแแก, แแแแ แแ แแ แจแแแชแแแก แ แแแแ แคแฃแแฅแชแแฃแ แแแขแแแ แแแแก.
() recv_internal(slice in_msg) impure {
;; TODO: implementation
}
() recv_external(slice in_msg) impure {
;; TODO: implementation
}
แแฅ แแฃแชแแแแแแแแ แแแแก แแฎแกแแ, แแฃ แ แ slice
. TON Blockchain-แจแ แจแแแแฎแฃแแ แงแแแแ แแแแแชแแแ แแ แแก แแแแแฅแชแแ TVM cell
แแ แฃแแ แแแแ cell
, แแกแแ แฃแฏแ แแแก แจแแฃแซแแแ แจแแแแแฎแแก 1023 แแแขแ แแแแแชแแแแแ แแ 4-แแแ แแแแแแแแ แกแฎแแ แฃแฏแ แแแแแแ.
TVM cell slice
แแ slice
แแ แแก แแ แกแแแฃแแแก แแแฌแแแ cell
แแแแแแงแแแแแ แแแกแ แแแ แฉแแแแกแแแแก, แจแแแแแแแจแ แแแแ แแแแแ. แฉแแแแแแแก แแแแแแ แ แแก แแ แแก, แ แแ แจแแแแแซแแแ แกแแแ แข แแแแขแ แแฅแขแแ แแแแแกแแแ slice
แแ, แจแแขแงแแแแแแแแก แขแแแแก แแแฎแแแแแ, แแแแแฃแจแแแแ แแแแแชแแแแแ recv_external()
แแ recv_internal()
.
impure
โ แกแแแแแแซแ แกแแขแงแแ, แ แแแแแแช แแแฃแแแแแแก, แ แแ แคแฃแแฅแชแแ แชแแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแชแแแแแก.
แจแแแแแฎแแ แฎแแแจแแแ แฃแแแแแก แแแแ lottery-code.fc
แแ แจแแแแแแ.
~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc
แแ แแจแแแแก แแแแจแแแแแแแแก แแแฎแแ แจแแกแแซแแแแแแแ แแ แซแแแแแแก แแแแแงแแแแแแ
~/TON/build/crypto/func -help
แฉแแแ แจแแแแแแแแแ Fift แแกแแแแแแ แแก แแแแ 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
แแแกแ แแแจแแแแ แจแแกแแซแแแแแแแ แแแแแแแแ แแแแ, แแแแกแแแแก แแแแแแแแแแแ แแแ แแแแก.
แแแแแแแแแกแฌแแแแ, แ แแ แแแ แแแแ แฎแแแ แแแแแจแแ แแแก Asm.fif
แแก แแ แแก แแแแ แแแฌแแ แแแ Fift for Fift แแกแแแแแแ แจแ.
แแแแแแแแ แแแกแฃแ แก แกแแแ แข แแแแขแ แแฅแขแแก แแแจแแแแ แแ แขแแกแขแแ แแแ, แฉแแแ แจแแแฅแแแแ แคแแแแก แแแแแแแแ แแแแ lottery-test-suite.fif
แแ แแแแแแแแ แแ แจแแแแแแแแ แแแแ แแฅ, แจแแชแแแแแ แแแกแจแ แแแแ แฎแแแ, แ แแแแแแช แฌแแ แก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแก แแฃแแแแแจแ code
แจแแแแแ แแแแแกแชแ แแแก แแแ แขแฃแแแฃแ แแแแฅแแแแแ:
"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
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแจแแแ แแ แฉแแแก, แแฎแแ แแแแแ แแแแแแแขแแ แแแแ, แ แแแแแกแแช แแแแแแแงแแแแแ TVM-แแก แแแกแแจแแแแแ แแแแแ แคแแแแจแ.
0 tuple 0x076ef1ea , // magic
0 , 0 , // actions msg_sents
1570998536 , // unix_time
1 , 1 , 3 , // block_lt, trans_lt, rand_seed
0 tuple 100000000000000 , dictnew , , // remaining balance
0 , dictnew , // contract_address, global_config
1 tuple // wrap to another tuple
constant c7
0 constant recv_internal // to run recv_internal()
-1 constant recv_external // to invoke recv_external()
ะ c7
แฉแแแ แแฌแแ แ แแแแขแแฅแกแขแก, แแแฃ แแแแแชแแแแแก, แ แแแแแแแช TVM (แแ แฅแกแแแแก แแแแแแแ แแแแ) แแแแฅแแแแแแแ. แแแแแฃแ แกแแก แแ แแกแแช แแ, แแ แ-แแ แแแ แแแแแแแแแ แแ แแฉแแแแ แ แแแแ แจแแฅแแแ c7
แแ แแแแแแแแแ แ. แแ แกแขแแขแแแจแ แจแแแซแแแแ แแแแญแแ แแแ แจแแชแแแ rand_seed
แแแแแแแแ แจแแแแฎแแแแแแ แ แแชแฎแแแก แฌแแ แแแฅแแแ แแแแแแแแแแฃแแแ แแแกแแ แแ แแ แแชแแแแแ, แงแแแแ แฏแแ แแ แแแแแ แ แแชแฎแแ แแแแ แฃแแแแแ.
recv_internal
ะธ recv_external
0 แแ -1 แแแแจแแแแแแแแก แแฃแแแแแแแ แแแกแฃแฎแแกแแแแแแแแ แแฅแแแแแแ แกแแแ แข แแแแขแ แแฅแขแจแ แจแแกแแแแแแกแ แคแฃแแฅแชแแแแแก แแแแแซแแฎแแแแแ.
แฉแแแ แแฎแแ แแแแ แแแ แ แจแแแฅแแแแ แแแ แแแแ แขแแกแขแ แฉแแแแ แชแแ แแแแ แญแแแแแแ แแแแขแ แแฅแขแแกแแแแก. แกแแชแฎแแแแกแแแแก, แแ แแ แแแกแแแแก, แฉแแแ แแแแแแแขแแแ แงแแแแ แขแแกแขแก แแแแแ แคแแแแจแ. lottery-test-suite.fif
.
แจแแแฅแแแแ แชแแแแแ storage
แแ แแแฌแแ แ แชแแ แแแแ cell
, แแก แแฅแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแแฎแแ.
message
แแก แแ แแก แแแกแแฏแ, แ แแแแแกแแช แฉแแแ แแฃแแแแแแแ แแแ แแแแ แกแแแ แข แแแแขแแฅแขแก. แแแแแ, แแฎแแ แแก แชแแ แแแแ แแงแแก.
variable storage
<b b> storage !
variable message
<b b> message !
แแแก แจแแแแแ แ แแช แแแแแแแแแแ แแฃแแแแแแแ แแ แชแแแแแแแ, แแแฌแงแแแ TVM-แก แแ แซแแแแแแก แแแแแงแแแแแแ runvmctx
แแ แจแแงแแแแแแ แแแ แแแแขแ แแแแก แแแแแชแแแ.
message @
recv_external
code
storage @
c7
runvmctx
แกแแแแแแ แฏแแแจแ, แฉแแแ แจแแแซแแแแ Fift
.
แแฎแแ แจแแแแแซแแแ แแแฆแแแฃแแ แแแแแก แแแจแแแแ.
export FIFTPATH=~/TON/ton/crypto/fift/lib // ะฒัะฟะพะปะฝัะตะผ ะพะดะธะฝ ัะฐะท ะดะปั ัะดะพะฑััะฒะฐ
~/TON/build/crypto/fift -s lottery-test-suite.fif
แแ แแแ แแแแ แฃแแแ แแแฃแจแแแก แจแแชแแแแแแแก แแแ แแจแ แแ แแแแแกแแแแแจแ แแแแฎแแแ แจแแกแ แฃแแแแแก แแฃแ แแแแก:
execute SETCP 0
execute DICTPUSHCONST 19 (xC_,1)
execute DICTIGETJMPZ
execute DROP
execute implicit RET
[ 3][t 0][1582281699.325381279][vm.cpp:479] steps: 5 gas: used=304, max=9223372036854775807, limit=9223372036854775807, credit=0
แจแแกแแแแจแแแแแ, แฉแแแ แแแแฌแแ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแ แแแแ แกแแแฃแจแแ แแแ แกแแ.
แแฎแแ แฉแแแ แฃแแแ แแแแแแแขแแ แคแฃแแฅแชแแแแแ แแแ. แแแแแ, แแแ แแแ แ แแแจแ แแแแฃแแแแ แแ แจแแขแงแแแแแแแแแก, แ แแแแแแแช แแแแแก แแแ แ แกแแแงแแ แแแแ recv_external()
แแแแแแแแแ แ แแแแแ แแ แฉแแแก แจแแขแงแแแแแแแแก แคแแ แแแขแก, แ แแแแแก แแแฆแแแแช แฎแแแจแแแ แฃแแแแแก แจแแฃแซแแแ.
แแแแ แแ แฉแแแฃแแแแ แแ
- แแแ แแแ แ แแแจแ, แฉแแแ แแแแแแ แแแแแชแแแ แฉแแแแ แแแแขแ แแฅแขแ แแแ แ แกแแแงแแ แแกแแแ แแ แแกแ แแแแฎแแแแ แแก, แ แแ แแฎแแแแ แแแแขแ แแฅแขแแก แแคแแแแแแก แจแแฃแซแแแ แแแก แแแ แ แจแแขแงแแแแแแแแแแก แแแแแแแแ.
- แแแแ แแช, แ แแแแกแแช แฉแแแ แแแแแแแแแ แแแฅแแแ แจแแขแงแแแแแแแแก TON-แแ, แแแกแฃแ แก, แ แแ แแก แแแฎแแแก แแฃแกแขแแ แแ แแฎแแ แแ แ แแแแกแแช แแแแแ แจแแขแงแแแแแแแ แแแแแ แแแแแแแแแแแ, แญแแแแแแ แแแแขแ แแฅแขแ แแแก แฃแแ แงแแคแก.
แแแแขแแ, แแแแฅแแแก แงแแแแ แแแแขแ แแฅแขแจแ แแก แแ แ แแ แแแแแแ แแแแแแ แแแฃแแแ, แแแแแแแแ แฉแแแแ แแแแขแ แแฅแขแ แแฆแแแก แแแ แ แแแแแแแแแแก, แแแแแแช แฃแแแ แแแแ แฃแแแ.
แฉแแแ แแแแก แกแแแแ แแกแแแ แ แแแแแแแแแแ แแแแ แแแแแแแแแแ. แฏแแ แแ แแแแแแแก แแแแแแแ แแแแ แแแแแแ แแแ, แแฃ แแแแขแ แแฅแขแแ แฃแแแ แแแแฆแ แแกแแแ แจแแขแงแแแแแแแ แแ แแแแแฃแจแแแ, แแแจแแ แแแแ แแ แแ แจแแแกแ แฃแแแแก. แแ แจแแแแแ แฉแแแ แแแแแแแแ แแแ แแ แแแแแแแก แแกแ, แ แแ แแฎแแแแ แแแแแแแแแแแก แแแ แแแแฃแ แฌแ แแก แจแแฃแซแแแ แจแแขแงแแแแแแแแแแก แแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแแ.
แแ แแแแแแแก แแแแแญแ แแก แกแฎแแแแแกแฎแแ แแแ แแ แกแแแแแก แแแแแแแ แแแแแ แจแแขแงแแแแแแแแแแ. แฉแแแ แแแแก แแแแแแแแแแ แแ แแแแ. แกแแแ แข แแแแขแ แแฅแขแจแ แฉแแแ แแแแแแแแ แแแฆแแแฃแแ แจแแขแงแแแแแแแแแแก แแ แแชแฎแแแแก แกแแฌแงแแกแ แแแแจแแแแแแแแ 0. แงแแแแ แจแแขแงแแแแแแแแจแ แกแแแ แข แแแแขแ แแฅแขแจแ แแแแแแแขแแแ แแ แแชแฎแแแแแก แแแแแแแแ แ แแแแจแแแแแแแแก. แแฃ แจแแขแงแแแแแแแแจแ แแ แแชแฎแแแแแก แแแแจแแแแแแแ แแ แแแแฎแแแแ แกแแแ แข แแแแขแ แแฅแขแจแ แแแชแแแฃแ แแแแจแแแแแแแแก, แแแจแแ แฉแแแ แแ แแแแฃแจแแแแแ แแแก, แแฃ แแกแแ, แแแจแแ แแแแฃแจแแแแแ แแ แแแแแ แแแ แแ แแชแฎแแแแก แกแแแ แข แแแแขแ แแฅแขแจแ 1-แแ.
แฉแแแ แแฃแแ แฃแแแแแแ lottery-test-suite.fif
แแ แแแแแแขแแ แแแแ แ แขแแกแขแ. แแแแแแแแแแแแแแ แแ แแกแฌแแ แ แแแแแ แ, แแแแ แฃแแแ แฉแแแแแแก แแแแแแแแแแกแ. แแแแแแแแแ, แแแฅแแแ 166 แแแแฎแแแ แแแแขแ แแฅแขแแก แแแแแชแแแแแจแ แแ แฉแแแ แแแแแแแแแแแ 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"
แฒแแแ แแแแแฅแชแแ.
~/TON/build/crypto/fift -s lottery-test-suite.fif
แแ แฉแแแ แแแแแแแฎแแแ, แ แแ แขแแกแขแ แจแแกแ แฃแแแแฃแแแ แจแแชแแแแแ.
[ 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
แแ แแขแแแแ lottery-test-suite.fif
แฃแแแ แแแแแแงแฃแ แแแแแแก
แแฎแแ แแแแแ แแแแแแแขแแ แแ แแชแฎแแแแแก แแแแแแ แญแแแแแ แแแแขแ แแฅแขแจแ 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
แขแงแฃแแแแ แแแกแแฏแ, แ แแแแแกแแช แฉแแแ แแฃแแแแแแแ.
แแแ แแแแ, แ แแกแแช แแแแแแแแ, แแ แแก แแแแก แจแแแแฌแแแแ, แแ แแก แแฃ แแ แ แจแแขแงแแแแแแแแจแ แแแแแชแแแแแ, แแฃ แแ แ, แแแจแแ แฃแแ แแแแ แแแแแแแแ แ.
แจแแแแแแ, แฉแแแ แแแแแแแแแแแ แจแแขแงแแแแแแแแก. in_msg~load_uint(32)
แแขแแแ แแแแ แแแแแ แ 165, 32 แแแขแแแแ unsigned int
แแแแแชแแแฃแแ แแแแแแแแแแแ.
แจแแแแแแ, แฉแแแ แแขแแแ แแแแ 32 แแแขแก แญแแแแแแ แแแแขแ แแฅแขแแก แกแแชแแแแแแ. แแแแแฌแแแแ, แ แแ แแแขแแแ แแฃแแ แ แแชแฎแแ แแแแฎแแแแ แแแแแแแก, แแฃ แแ แ, แแแแแแแแแแกแก แแแงแแแแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แ แแแแแ แฉแแแ แแแแแแแแแแ แ แจแแฃแกแแแแแแแแจแ, แแแแแแแแแแกแ แฃแแแ แแงแแก แแแจแแแแฃแแ.
แแฎแแ แจแแแแแแแแแ.
~/TON/build/crypto/func -APSR -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc
แแแแแแแแ แแ แแแฆแแแฃแแ แแแแ lottery-test-suite.fif
, แแ แแแแแแแฌแงแแแก แแแแ แฎแแแแก แจแแชแแแ.
แขแแกแขแแก แฉแแแแ แแแแก แจแแแแฌแแแแ:
~/TON/build/crypto/fift -s lottery-test-suite.fif
แแแแแแแแแกแฌแแแแ, แ แแ แแแฃแฎแแ แฎแแแแแแ แจแแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแแก แแแแแก แแฃแแแแแ แแแแแ แแแ แกแแขแแกแขแ แคแแแแจแ, แแแแขแแ แฉแแแ แแแแฌแแ แ แกแแ แแแขแก, แ แแแแแแช แฉแแฌแแ แก แแแแก แฉแแแแแแแก แแฃแแแแแแ แแ แฉแแแ แฃแแ แแแแ แแแแแแแแจแแ แแแ แจแแแแแแแ แแแแก แฉแแแแก แขแแกแขแแแแแ. "include"
.
แจแแฅแแแแแ แคแแแแ แแ แแแฅแขแแก แกแแฅแแฆแแแแแจแ build.sh
แจแแแแแแ แจแแแแแ แกแแ.
#!/bin/bash
~/TON/build/crypto/func -SPA -R -o lottery-compiled.fif ~/TON/ton/crypto/smartcont/stdlib.fc ./lottery-code.fc
แแแแแ แแแแฎแแแแ แแก แจแแกแ แฃแแแแแแ.
chmod +x ./build.sh
แแฎแแ แกแแแแแ แแกแแ แฉแแแแ แกแแ แแแขแแก แแแจแแแแ แแแแขแ แแฅแขแแก แจแแกแแแแแแแ. แแแแ แแ แแแแก แแแ แแ, แฉแแแ แฃแแแ แฉแแแฌแแ แแ แแก แแฃแแแแแจแ code
. แแกแ แ แแ, แฉแแแ แจแแแฅแแแแ แแฎแแ แคแแแแก lotter-compiled-for-test.fif
, แ แแแแแกแแช แฉแแแ แแแแ แคแแแแจแ lottery-test-suite.fif
.
แแแแแ แแแแแแแขแแ แแแแ sh แกแแ แแแขแก, แ แแแแแแช แฃแแ แแแแ แแฃแแแแ แแแก แจแแแแแแแ แคแแแแก lotter-compiled-for-test.fif
แแ แจแแชแแแแแ แแแกแจแ แแแแ แฎแแแ.
# 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
แแฎแแ, แจแแกแแแแฌแแแแแแ, แแแฃแจแแแ แแแฆแแแฃแแ แกแแ แแแขแ แแ แฉแแแ แจแแแฅแแแแ แคแแแแก lottery-compiled-for-test.fif
แ แแแแแกแแช แฉแแแ แจแแแแขแแแ แฉแแแแก lottery-test-suite.fif
ะ lottery-test-suite.fif
แแแแแฆแแ แฎแแแจแแแ แฃแแแแแก แแแแ แแ แแแแแแขแแ แฎแแแ "lottery-compiled-for-test.fif" include
.
แแแแแ แแ แขแแกแขแแแ, แ แแ แแแฎแแ แแแแแแแแ แแฃ แแ แ.
~/TON/build/crypto/fift -s lottery-test-suite.fif
แแแ แแแ, แแฎแแ แขแแกแขแแแแก แแแจแแแแแก แแแขแแแแขแแแแ แแแแกแแแแก, แแแแแ แจแแแฅแแแแ แคแแแแ test.sh
, แ แแแแแแช แฏแแ แจแแแกแ แฃแแแแก build.sh
แแ แจแแแแแ แแแแแ แแ แขแแกแขแแแ.
touch test.sh
chmod +x test.sh
แจแแแแแ แแฌแแ แ
./build.sh
echo "nCompilation completedn"
export FIFTPATH=~/TON/ton/crypto/fift/lib
~/TON/build/crypto/fift -s lottery-test-suite.fif
แฒแแแ แแแแแแแแแ test.sh
แแ แแแฃแจแแแ, แ แแ แแแ แฌแแฃแแแแ, แ แแ แขแแกแขแแแ แแฃแจแแแแก.
chmod +x ./test.sh
./test.sh
แแแแแฌแแแแ, แ แแ แฎแแแจแแแ แฃแแแแ แจแแแแแแแแแ แแ แขแแกแขแแแ แจแแกแ แฃแแแแฃแแแ.
แแจแแแแแแ แแ, แแฎแแ แแแจแแแแแกแแก test.sh
แขแแกแขแแแ แจแแแแแแแแ แแ แแแจแแแแฃแแ แแฅแแแแ แแแฃแงแแแแแแแแ. แแฅ แแ แแก แแแฃแแ
แแแ แแ, แกแแแแ แแแแแแ แซแแแแแ, แแแฎแแ แฎแแแฃแแแแแกแแแแก แแแแแ แแ แแ แ แแ แแแแแแแแแ.
แแแแแ แจแแแฅแแแแ แกแแฅแแฆแแแแ build
แกแแแแช แฉแแแ แจแแแแแแฎแแแ แแแแแ แแแฃแ แแแแขแ แแฅแขแก แแ แแแก แแแแแก แฉแแฌแแ แแแ แแฃแแแแแจแ lottery-compiled.fif
, lottery-compiled-for-test.fif
. แฉแแแ แแกแแแ แจแแแฅแแแแ แกแแฅแแฆแแแแแก test
แกแแ แจแแแแแฎแแแ แกแแขแแกแขแ แคแแแแ lottery-test-suite.fif
แแ แแแขแแแชแแฃแ แแ แกแฎแแ แแฎแแ แแแญแแ แแก แคแแแแแแ.
แแแแแ แแแแแแ แซแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแฃแจแแแแแ.
แจแแแแแแ แฃแแแ แแงแแก แขแแกแขแ, แ แแแแแแช แแแแฌแแแแก, แ แแ แจแแขแงแแแแแแแ แแแฆแแแฃแแแ แแ แแ แแชแฎแแแแ แแแแแฎแแแแฃแแแ แแแฆแแแแแจแ, แ แแแแกแแช แฉแแแ แแแแแแแแแแแ แกแฌแแ แแแแแ แก. แแแแ แแ แฉแแแ แแแแก แแแแแแแแแแแ แแแแแแแแแแ.
แแฎแแ แแแแแ แแแคแแฅแ แแ แแแแแ, แแฃ แ แ แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แ แแ แ แ แแแแแชแแแแแ แฃแแแ แแงแแก แจแแแแฎแฃแแ แญแแแแแแ แแแแขแ แแฅแขแจแ.
แแ แแฆแแฌแแ แงแแแแแคแแ แก, แ แแช แแแแฅแแก.
`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` ะฟะตัะตะผะตะฝะฝะฐั ัะธะฟะฐ ัะปะพะฒะฐัั, ั
ัะฐะฝะธั ะฟะพัะปะตะดะฝะธะต ะดะฒะฐะดัะฐัั ััะฐะฒะพะบ.
แจแแแแแแ แแแแแฏแ แแ แแก แแ แ แคแฃแแฅแชแแแก แฉแแฌแแ แ. แแแ แแแแก แแแแฃแซแแฎแแ pack_state()
, แ แแแแแแช แจแแคแฃแแแแก แแแแแชแแแแแก แแแแแแ แ แแแแขแ แแฅแขแแก แกแแชแแแจแ แจแแแแแแ แจแแกแแแแฎแแ. แแแแ แแก, แฉแแแ แแแแฃแ แแแแแ unpack_state()
แฌแแแแแแฎแแแก แแ แแแแแ แฃแแแแก แแแแแชแแแแแก แกแแชแแแแแแ.
_ 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;
}
แฉแแแ แแแแแขแแแ แแ แแ แคแฃแแฅแชแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแฌแงแแกแจแ. แแฃแ แแ
แแแแแชแแแแแแก แจแแกแแแแฎแแ แแแแญแแ แแแแแ แฉแแจแแแแแฃแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแ set_data()
แแ แแก แแแฌแแ แก แแแแแชแแแแแก pack_state()
แญแแแแแแ แแแแขแ แแฅแขแแก แกแแชแแแจแ.
cell packed_state = pack_state(arg_1, .., arg_n);
set_data(packed_state);
แแฎแแ, แ แแแแกแแช แฉแแแ แแแแฅแแก แแแกแแฎแแ แฎแแแแแ แคแฃแแฅแชแแแแ แแแแแชแแแแแแก แฉแแฌแแ แแกแ แแ แฌแแแแแฎแแแกแแแแก, แจแแแแแซแแแ แแแแแแแแแ.
แฉแแแ แฃแแแ แจแแแแแแฌแแแ, แ แแ แจแแแแกแฃแ แจแแขแงแแแแแแแแก แฎแแแก แแฌแแ แก แฎแแแจแแแ แฃแแแแแก แแคแแแแแแ (แแแ แแแ, แแ แกแฎแแ แแแแฎแแแ แแแแแ, แ แแแแแกแแช แแฅแแก แฌแแแแแ แแแ แแ แแแกแแฆแแแแ).
แ แแแแกแแช แฉแแแ แแแแแแแฅแแแงแแแแ แกแแแ แข แแแแขแ แแฅแขแก, แจแแแแแซแแแ แแแกแ แแแแชแแแแแแแชแแ แแแฆแแแแแจแ แกแแญแแ แ แแแแแชแแแแแแ, แ แแแแแแแช แจแแแแแฎแแแ แจแแแแแแแ แแแแแงแแแแแแกแแแแก. แฉแแแ แแฅ แแแแฌแแ แ แกแแฏแแ แ แแแกแแฆแแแก, แ แแแ แจแแแแแแฌแแแ, แ แแ แจแแแแแแแแแ แจแแขแงแแแแแแแแก แฎแแแแแฌแแ แ แจแแกแ แฃแแแแฃแแแ แจแแกแแแแแแกแ แแแ แแแ แแแกแแฆแแแแ.
แกแแแแ แแแแแแ แซแแแแแ, แจแแแฅแแแแ แแแ แแแ แแแกแแฆแแแ แแ แฉแแแฌแแ แแ แแแก test/keys/owner.pk
. แแแแกแแแแแก แแแฃแจแแแ Fift แแแขแแ แแฅแขแแฃแ แ แแแแแจแ แแ แแแฃแจแแแ แแแฎแ แแ แซแแแแแ.
`newkeypair` ะณะตะฝะตัะฐัะธั ะฟัะฑะปะธัะฝะพะณะพ ะธ ะฟัะธะฒะฐัะฝะพะณะพ ะบะปััะฐ ะธ ะทะฐะฟะธัั ะธั
ะฒ ััะตะบ.
`drop` ัะดะฐะปะตะฝะธั ะธะท ััะตะบะฐ ะฒะตัั
ะฝะตะณะพ ัะปะตะผะตะฝัะฐ (ะฒ ะดะฐะฝะฝะพะผ ัะปััะฐะต ะฟัะฑะปะธัะฝัะน ะบะปัั)
`.s` ะฟัะพััะพ ะฟะพัะผะพััะตัั ััะพ ะปะตะถะธั ะฒ ััะตะบะต ะฒ ะดะฐะฝะฝัะน ะผะพะผะตะฝั
`"owner.pk" B>file` ะทะฐะฟะธัั ะฟัะธะฒะฐัะฝะพะณะพ ะบะปััะฐ ะฒ ัะฐะนะป ั ะธะผะตะฝะตะผ `owner.pk`.
`bye` ะทะฐะฒะตััะฐะตั ัะฐะฑะพัั ั Fift.
แแแแแ แจแแแฅแแแแ แกแแฅแแฆแแแแ keys
แกแแฅแแฆแแแแแก แจแแแแแ test
แแ แแฅ แฉแแฌแแ แแ แแแ แแแ แแแกแแฆแแแ.
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
แฉแแแ แแฎแแแแแ แคแแแแก แแแแแแแแ แ แกแแฅแแฆแแแแแจแ owner.pk
.
แฉแแแ แแฎแกแแแ แกแแฏแแ แ แแแกแแฆแแแก แแแกแขแแแแ, แ แแชแ แแแแแญแแ แแแแ, แจแแแแแซแแแ แแแแแฆแแ แแแ แซแแแแ.
แแฎแแ แฉแแแ แฃแแแ แแแแฌแแ แแ แฎแแแแแฌแแ แแก แแแแแแแฌแแแแ. แแแแแฌแงแแ แขแแกแขแแ. แแแ แแแ แ แแแจแ, แฉแแแ แแแแแฎแฃแแแแ แแแ แแ แแแกแแฆแแแก แคแแแแแแแ แคแฃแแฅแชแแแก แแแแแงแแแแแแ file>B
แแ แฉแแฌแแ แแ แชแแแแแแ owner_private_key
, แจแแแแแ แคแฃแแฅแชแแแก แแแแแงแแแแแแ priv>pub
แแแแแแ แขแแ แแแ แแแ แแแ แแแกแแฆแแแ แกแแฏแแ แ แแ แฉแแฌแแ แแ แจแแแแแ owner_public_key
.
variable owner_private_key
variable owner_public_key
"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !
แแ แแแ แแแกแแฆแแแ แแแญแแ แแแแ.
แฉแแแ แแแงแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแแฎแแแก แแแแแแแแฃแ แ แแแแแชแแแแแแ แแแแแ แแแแแแแแแแ แแแแ, แ แแแแ แช แคแฃแแฅแชแแแจแ pack_state()
แแ แฉแแฌแแ แแ แชแแแแแแ storage
.
variable owner_private_key
variable owner_public_key
variable orders
variable owner_wc
variable owner_account_id
"./keys/owner.pk" file>B owner_private_key !
owner_private_key @ priv>pub owner_public_key !
dictnew orders !
0 owner_wc !
0 owner_account_id !
<b 0 32 u, owner_public_key @ B, 0 32 u, 0 32 u, 0 Gram, 0 Gram, owner_wc @ 32 i, owner_account_id @ 256 u, orders @ dict, b> storage !
แจแแแแแแ, แฉแแแ แจแแแฅแแแแ แฎแแแแแฌแแ แแ แจแแขแงแแแแแแแแก, แ แแแแแแช แจแแแชแแแก แแฎแแแแ แฎแแแแแฌแแ แแก แแ แแ แแชแฎแแแแแก แแแแจแแแแแแแแก.
แฏแแ แแฅแแแแ แแแแแชแแแแแก, แ แแแแแแ แแแแแชแแแแช แแแแแแ, แจแแแแแ แแแฌแแ แ แฎแแแก แแแ แแแ แแแกแแฆแแแแ แแ แแแแแก แแแงแแแแแแแ แฎแแแแแฌแแ แแ แจแแขแงแแแแแแแแก.
variable message_to_sign
variable message_to_send
variable signature
<b 0 32 u, b> message_to_sign !
message_to_sign @ hashu owner_private_key @ ed25519_sign_uint signature !
<b signature @ B, 0 32 u, b> <s message_to_send !
แจแแแแแแ, แจแแขแงแแแแแแแ, แ แแแแแกแแช แฉแแแ แแแแฃแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแก, แแฌแแ แแแ แชแแแแแแ message_to_send
แคแฃแแฅแชแแแแแก แจแแกแแฎแแ hashu
, ed25519_sign_uint
แจแแแแซแแแ แฌแแแแแแฎแ
แแ แฉแแแ แแแแแ แแแแฃแฌแแแแแ แขแแกแขแแก แแแกแแขแแ แแแแแ.
message_to_send @
recv_external
code
storage @
c7
runvmctx
แฉแแแแขแแ แแ แขแแกแขแ แแ แฉแแแแ แแแแ, แแแแขแแ แจแแแชแแแแ แกแแแ แข แแแแขแ แแฅแขแก, แ แแแ แแแ แแแแฆแแก แแ แคแแ แแแขแแก แจแแขแงแแแแแแแแแ แแ แแแแแแแแฌแแแก แฎแแแแแฌแแ แ.
แฏแแ แแแแแฎแฃแแแแ แฎแแแแแฌแแ แแก 512 แแแขแก แแแกแแฏแแแแ แแ แแฌแแ แ แแแก แชแแแแแจแ, แจแแแแแ แแแแแฎแฃแแแแ แแ แแชแฎแแแแแก แชแแแแแแก 32 แแแขแก.
แแแแแแแแ แฉแแแ แแแแฅแแก แคแฃแแฅแชแแ แแแแแแ แฃแแ แแแแขแ แแฅแขแแก แกแแชแแแแแแ แแแแแชแแแแแแก แฌแแกแแแแแฎแแ, แฉแแแ แแแก แแแแแแแงแแแแแ.
แแแแแชแแแฃแแ แแ แแชแฎแแแแแก แจแแแแแแแ แจแแแแฌแแแแ แจแแแแฎแแแ แแ แฎแแแแแฌแแ แแก แแแแแฌแแแแแ. แแฃ แ แแแ แแ แแแแฎแแแแ, แแแจแแ แแแแแแแแแแกแก แแงแ แแ แจแแกแแแแแแกแ แแแแแ.
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));
แจแแกแแแแแแกแ แแแแแแแฃแแแแ
แแแแแ แฉแแแแขแแ แแ แขแแกแขแแแ แแ แแแแฎแแ, แ แแ แแแแ แ แขแแกแขแ แฉแแแแ แแ. แแ แ แแแแแแแก แแแแ, แจแแขแงแแแแแแแแจแ แแแขแแแแก แแแแแแแแแ แแ แกแแชแแแจแ แแแขแแแแก แแแแแแแแแ, แแแแขแแ แแแแ แแจแแแแ แแแแแแแแกแแก. แฉแแแ แฃแแแ แแแแแแแขแแ แแแแแแแแแก แฎแแแแแฌแแ แ, แ แแแแแกแแช แแแแแแแแแ แแ แแแแแแแแแ แแ แแแฎแกแแแ แแแ แแแแ แขแแกแขแแแแ.
แแแแ แ แขแแกแขแจแ แแแแแแแขแแแ แจแแขแงแแแแแแแแก แฎแแแแแฌแแ แแก แแ แจแแแชแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแแฎแแแก.
แแแแฌแแ แแ แแแแแฎแ แขแแกแขแ, แ แแแแแจแแช แแแแแแแแแแแแแ แจแแขแงแแแแแแแแก แฎแแแแแฌแแ แแแ แกแฎแแแกแ แแแ แแแ แแแกแแฆแแแแ. แแแแแ แจแแแฅแแแแ แกแฎแแ แแแ แแแ แแแกแแฆแแแ แแ แจแแแแแแฎแแ แคแแแแจแ not-owner.pk
. แแแแแ, แฎแแแ แแแแแฌแแ แแ แจแแขแงแแแแแแแแก แแ แแแ แแแ แแแกแแฆแแแแ. แแแแแ แฉแแแแขแแ แแ แขแแกแขแแแ แแ แแแแ แฌแแฃแแแแ, แ แแ แงแแแแ แขแแกแขแ แแแแแแแก.
แแฎแแ แฉแแแ แกแแแแแแแ แจแแแแแซแแแ แแแแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแแแก แแแแฎแแ แชแแแแแแแแ.
ะ recv_external()
แฉแแแ แแแแแฆแแแ แแ แ แขแแแแก แจแแขแงแแแแแแแแก.
แแแแแแแแ แฉแแแแ แแแแขแ แแฅแขแ แแแแแแแจแแแแแก แแแ แแแก แแแแแ แแแแแก, แแก แแแแฎแ แแแขแแ แแแก แจแแแฅแแแแแก แฃแแแ แแแแแแ แแชแฎแแก. แแแขแแ แแแก แจแแแฅแแแแแแก แกแแคแฃแแแก แแแกแแแแ แแ แแฌแแ แแแ แกแแ แแแคแจแ แแแแขแ แแฅแขแแก แจแแฅแแแแกแแก.
แงแแแแแ แจแแแแฎแแแแแกแแแแก, แฉแแแ แแแญแแ แแแแ แจแแกแแซแแแแแแแ แจแแแชแแแแแ แแแกแแแแ แแ, แ แแแแแแแช แแแแแแแแแแแแแ แแแแแ แชแฎแแแฃแแแ แแ แแแ. แแกแแแ แฃแแแ แจแแแแแซแแแก แแแขแแ แแแแแ แแ แแแแแแก แแแแแแแแ แแแกแแแฃแแ แแก แแแกแแแแ แแแ.
แแแแแฌแงแแ แแแ แแแแแ. แแแแแ, แฏแแ แแแแฌแแ แแ แขแแกแขแ, แ แแแแแแช แจแแแแแฌแแแแก, แ แแ แจแแขแงแแแแแแแแก แแแแแแแแแก แจแแแแแ, แกแแแ แข แแแแขแ แแฅแขแแ แจแแแแแฎแ แแฎแแแ แแแกแแแแ แแ แกแแชแแแจแ. แแแแแแแแแกแฌแแแแ, แ แแ แจแแขแงแแแแแแแแจแ, แแแ แแ แแ แแชแฎแแแแแกแ แแ แแฎแแแ แแแกแแแแ แแแกแ, แแแแแแแแแ action
7-แแแขแแแแ แแ แแฃแแ แงแแคแแแ แแแแแ แ แแชแฎแแ, แแแกแแแ แแแแแแแแแแ แ, แฉแแแ แแแ แฉแแแ แ แแแแ แแแแแแฃแจแแแแ แจแแขแงแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแจแ.
<b 0 32 u, 1 @ 7 u, new_owner_wc @ 32 i, new_owner_account_id @ 256 u, b> message_to_sign !
แขแแกแขแจแ แฎแแแแแ, แแฃ แ แแแแ แฎแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแแฎแแแก แแแ แแแแแแแชแแ storage
แฎแฃแแจแ. แชแแแแแแก แแแกแแ แแแแแแแชแแ แแฆแฌแแ แแแแ แแแฎแฃแแ แแแแฃแแแแขแแชแแแจแ.
แแแแแ แฉแแแแขแแ แแ แขแแกแขแ แแ แแแแฎแแ, แฉแแแแ แแแแ แแฃ แแ แ. แแฎแแ แแแแแแแขแแ แแแแแแ แแแขแแ แแแก แแคแแแแแแแก แแแกแแแแ แแแก แจแแกแแชแแแแแแ.
แกแแแ แข แแแแขแ แแฅแขแจแ แฉแแแ แแแแ แซแแแแแ แแแแแแแก message
, แฌแแแแแแฎแแ action
. แจแแแแฎแกแแแแแ, แ แแ แฉแแแ แแแแฅแแก แแ แ action
: แจแแชแแแแแ แแแกแแแแ แแ แแ แแแแแแแแแ แแ แแแแแ.
แจแแแแแ แแแแแฎแฃแแแแ แแแแขแ แแฅแขแแก แแคแแแแแแแก แแฎแแ แแแกแแแแ แแก แแ แแแแแฎแแแ แกแแชแแแจแ.
แฉแแแ แแแขแแ แแแ แขแแกแขแแแก แแ แแฎแแแแแ, แ แแ แแแกแแแ แขแแกแขแ แฉแแแแ แแ. แแแแ แแ แฎแแแแ แแแแก แแแแ, แ แแ แแแแขแ แแฅแขแ แแฎแแ แแแแแขแแแแ แแแแแแแแแแก 7 แแแขแก แแแแแแแแแแแ, แ แแแแแแแช แแแแแ แขแแกแขแก. แแแแ แจแแขแงแแแแแแแแก แแแแแแแขแแ แแ แแ แกแแแฃแแ แจแแขแงแแแแแแแ action
. แแแแแ แฉแแแแขแแ แแ แขแแกแขแแแ แแ แแแแฎแแ, แ แแ แงแแแแแคแแ แ แแแแแแแก.
แแฎแแ แแแแฌแแ แแ แแแแแแ แแ แแแแแแก แแแแแแแแฃแ แ แแแแแแแแแแ แแแ แ แจแแแแฎแฃแ แแแกแแแแ แแแ แแแแแแแแแกแแแแก.
แฏแแ แแแแฌแแ แแ แขแแกแขแ. แฉแแแ แแแแฌแแ แ แแ แขแแกแขแก, แแ แแ, แ แแแแกแแช แแแแแแกแ แแ แแ แแก แกแแแแแ แแกแ, แแแแ แ, แ แแแแกแแช แงแแแแแคแแ แ แฌแแ แแแขแแแแ แฃแแแ แแแแแ แแก. แขแแกแขแแแแก แแแฎแแ แจแแกแแซแแแแแแแ
แแฎแแ แแแแแ แแแแแแแขแแ แแแแ. แแแ แแแแ, แแแแแ แแแแฌแแ แแ แแ แ แแแแฎแแแ แ แแแแแแ. แแแ แแแแ แแแฆแแแแก แแแแแแ แแ แแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแแแแ แ แแแแแแกแแก แแแ แแแแแ.
int balance() inline_ref method_id {
return get_balance().pair_first();
}
แแ แแแแ แ แแ แแก แแ แแแแแแก แกแฎแแ แกแแแ แข แแแแขแ แแฅแขแแ แแแแแแแแแกแแแแก. แแ แแแแแแแแ แแแแแแแแแ แ แแก แแแแแแ แกแฎแแ แญแแแแแแ แแแแขแ แแฅแขแแแแ.
() 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
}
แแแแแ แแแแแแแขแแ แแก แแ แ แแแแแแ แกแแแ แข แแแแขแ แแฅแขแจแ แแ แแแแฌแแ แแ แแแแแแ. แแแ แแแ แ แแแจแ, แฉแแแ แแแแแแแแแแแ แฌแแ แแแแแแก แแ แแแแแแก แ แแแแแแแแแก. แจแแแแแ แแแแแฌแแแแ แแแแแแกแก, แแฃ แกแแแแแ แแกแ แแ แแ แแก แแแแแแแแแแกแก แแงแ แแ. แแฃ แงแแแแแคแแ แ แแแ แแแแแ, แแแจแแ แฉแแแ แแแแแแแแแ แแ แแแก แจแแแแฎแฃแ แแแกแแแแ แแแ แแ แแแแฎแแแแ แแ แแชแฎแแแแก.
int amount_to_send = message~load_grams();
throw_if(36, amount_to_send + 500000000 > balance());
accept_message();
send_grams(owner_wc, owner_account_id, amount_to_send);
set_data(pack_state(stored_seqno + 1, pubkey, order_seqno, number_of_wins, incoming_amount, outgoing_amount, owner_wc, owner_account_id, orders));
แกแฎแแแแ แจแแ แแก, แงแแแแ แฏแแ แแ แกแแแ แข แแแแขแ แแฅแขแแแแ แแแแฃแจแแแแแฃแแ แจแแขแงแแแแแแแแกแแแแก แกแแแแแแกแแ แแ แแชแฎแแแ. แแแแกแแแแแก, แ แแ แกแแแ แข แแแแขแ แแฅแขแแก แจแแขแงแแแแแแแแแแ แจแแแกแ แฃแแแก แแแแฎแแแแ, แซแแ แแแแแ แจแแแแฌแแแแแก แจแแแแแ, แแฅแแแ แฃแแแ แแแ แแแแ accept_message()
.
แแฎแแ แแแแแ แแแแฃแแแแแแแแ แจแแแ แจแแขแงแแแแแแแแแก. แคแแฅแขแแแ แแแแ, แฉแแแ แแแแแฆแแแ แแฎแแแแ แแ แแแก แแ แแ แแแ แแแแฎแแก แแแแฃแแ แฃแแแแ แแแแแแแจแแก, แแฃ แแก แแแแแแแก แแ แแแกแแแแก แแคแแแแแแก, แแฃ แแก แฌแแแแแแก.
แฏแแ แแ แแ แแแ แขแแแ แขแแกแขแ แแแแฌแแ แแ. แแแแกแแแแแก แฉแแแ แแแญแแ แแแแ แกแแแ แข แแแแขแ แแฅแขแแก แกแแขแแกแขแ แแแกแแแแ แแ, แกแแแแแแแช แแ แแแก แแฃแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแก.
แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ แจแแแแแแ แแ แ แแแแ แแกแแแ, 32-แแแขแแแแ แแแแแ แ แแชแฎแแ, แ แแแแแแช แแแกแฃแฎแแกแแแแแแแแ แกแแแฃแจแแ แฏแแญแแแ แแ 256-แแแขแแแแ แแ แแฃแแ แงแแคแแแ แแแแแ แ แแชแฎแแแก แฃแแแแแแฃแ แ แแแแแ แแจแแก แแแแแ แ แแ แกแแแฃแจแแ แฏแแญแแจแ. แแแแแแแแแ, -1 แแ 12345, แแก แแแกแแแแ แแ แจแแแแแฎแแแ แคแแแแจแ.
แแแกแแแแ แแแก แจแแแแฎแแแก แคแฃแแฅแชแแ แแแแแแแแแ แ 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
แแแแแ แจแแแฎแแแแ, แแฃ แ แแแแ แแฃแจแแแแก แคแฃแแฅแชแแ, แแก แแแแแชแแแก แแแแก แแแแแแแก, แแฃ แ แแแแ แแฃแจแแแแก Fift. แแแฃแจแแแ Fift แแแขแแ แแฅแขแแฃแ แ แแแแแจแ.
~/TON/build/crypto/fift -i
แฏแแ แแแงแแแแแ -1, 12345 แแ แแแแแแแแ แคแแแแแก แกแแฎแแแก "sender.addr" แแแกแขแแแ:
-1 12345 "sender.addr"
แจแแแแแแ แแแแแฏแ แแ แแก แคแฃแแฅแชแแแก แจแแกแ แฃแแแแ -rot
, แ แแแแแแช แชแแแแก แแแกแขแแก แแกแ, แ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แฃแแแแแแฃแ แ แแแแแ แ แแแขแแก แแแแ แแแฌแแแจแ แแงแแก:
"sender.addr" -1 12345
256 u>B
แแแ แแแฅแแแแก 256-แแแขแแแ แแ แแฃแแ แงแแคแแ แแแแ แ แแชแฎแแก แแแแขแแแแ.
"sender.addr" -1 BYTES:0000000000000000000000000000000000000000000000000000000000003039
swap
แชแแแแก แกแขแแแแก แแแแ แแ แแแแแแแขแก.
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 -1
32 i>B
แแแ แแแฅแแแแก 32-แแแขแแแ แแแแ แ แแชแฎแแก แแแแขแแแแ.
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039 BYTES:FFFFFFFF
B+
แแแแแจแแ แแแก แแแแขแแแแก แแ แแแแแแแแแแ แแแแก.
"sender.addr" BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF
แแกแแ swap
.
BYTES:0000000000000000000000000000000000000000000000000000000000003039FFFFFFFF "sender.addr"
แแ แแแแแก, แแแแขแแแ แแฌแแ แแแ แคแแแแจแ B>file
. แแแแก แจแแแแแ แฉแแแแ แแแกแขแ แชแแ แแแแแ. แแแฉแแ แแแ Fift
. แคแแแแ แจแแฅแแแแแแ แแแแแแแแ แ แกแแฅแแฆแแแแแจแ sender.addr
. แแแแแแขแแแแ แคแแแแ แจแแฅแแแแ แกแแฅแแฆแแแแแจแ test/addresses/
.
แแแแแ แแแแฌแแ แแ แแแ แขแแแ แขแแกแขแ, แ แแแแแแช แแ แแแก แแแฃแแแแแแแก แกแแแ แข แแแแขแ แแฅแขแก.
แแฎแแ แแแขแแ แแแก แแแแแแแก แจแแแแฎแแ.
แแแ แแแแ, แ แแกแแช แแแแแแแแ, แแ แแก แจแแขแงแแแแแแแแก แจแแแแฌแแแแ bounced
แแฃ แแ แ แแฃ bounced
, แแแจแแ แฉแแแ แฃแแฃแแแแแแงแแคแ แแแก. bounced
แแแจแแแแก, แ แแ แแแแขแ แแฅแขแ แแแแแ แฃแแแแก แแ แแแก, แแฃ แ แแแแ แจแแชแแแแ แแแฎแแแแ. แฉแแแ แแ แแแแแแ แฃแแแแ แแ แแแก, แแฃ แจแแชแแแแ แแแฎแแ, แฉแแแ แแ แแแแแแ แฃแแแแ.
แฉแแแ แแแแแฌแแแแ แแฃ แแแแแแกแ แแแฎแแแแ แแ แแแแ แแแแแแแแ, แแแจแแ แฃแแ แแแแ แแแฆแแแ แจแแขแงแแแแแแแแก แแ แฃแแฃแแแแแแงแแคแ แแแก.
แจแแแแแแ, แฉแแแ แแแแแแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแก, แกแแแแแแแช แแแแแแ แจแแขแงแแแแแแแ.
แฉแแแ แแแแแฎแฃแแแแ แแแแแชแแแแแก แกแแชแแแแแแ แแ แจแแแแแ แแจแแแ แซแแแ แคแกแแแแแก แแกแขแแ แแแแแ, แแฃ แแแแแแ แแชแแ แแแขแแ. แแแฎแแ แฎแแแฃแแแแแกแแแแก แแแแฌแแ แ แกแแแ แแแแแขแแแแแ แคแฃแแฅแชแแ pack_order()
, unpack_order()
, remove_old_orders()
.
แจแแแแแ แแแแฎแฃแแแแ, แแฃ แแแแแแกแ แแ แแ แแก แกแแแแแ แแกแ แแแแแฆแแฃแ แแแแกแแแแก, แแแจแแ แแแแแแฉแแแ, แ แแ แแก แแ แแ แแก แคแกแแแ, แแ แแแแ แจแแแกแแแ แแ แจแแแแฎแแ แจแแแกแแแ orders
.
แแแแแก แแ แแแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแ แกแ.
แแแ แแแ แ แแแจแ, แแฃ แแแแแแแจแ แฌแแแแ, แแแแแฎแแแ แคแกแแแแแแก แแกแขแแ แแแจแ แแ แแฃ แแแแฎแ 3 แแ แแแแ แแแขแแ, 1/3-แก แแฃแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแแก แแคแแแแแแก.
แแฃ แแแแแแแจแแ แแแแแ, แแแจแแ แฉแแแ แแ แแแ แแแแฎแแก แแฃแแแแแแแ แแแแแแแจแแก แแแกแแแแ แแแ แแ แจแแแแแ แแแแแฎแแแ แแแคแแ แแแชแแแก แคแกแแแแก แจแแกแแฎแแ แแกแขแแ แแแจแ.
() 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));
}
แแ แแก.
แแฎแแ แงแแแแแคแแ แ แแแ แขแแแแ, แฉแแแ แจแแแฅแแแแ แแแแแแแแก, แ แแแ แแแแขแ แแฅแขแแก แแแแแแแ แแแแแก แจแแกแแฎแแ แแแคแแ แแแชแแ แแแแฆแแ แแแ แ แกแแแงแแ แแแแ (แคแแฅแขแแแ แแแแ, แฌแแแแแแฎแแ แแแแแชแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแแแฎแแแกแแแ).
แแกแแแ แแแแแแแฌแงแแ แแแแแก แแแแแขแแแ, แ แแแแแแช แแแแแฃแจแแแแแก แแแ แแแแแแ แแแแฎแแแแแก, แ แแแแแแช แฌแแ แแแแฅแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแฅแแแงแแแแแกแแก.
แจแแแแแแ แแแแแฏแ แแ แแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแฅแแแงแแแแ. แแแแแ แจแแแฅแแแแ แกแแฅแแฆแแแแ requests
.
แกแแคแฃแซแแแแ แแแแฆแ แแแแแชแแแแก แแแแ simple-wallet-code.fc
แ แแแแช แฆแแ แก แงแฃแ แแแฆแแแแก แแแฅแชแแแ. แฉแแแ แแฅแแแแ แญแแแแแแ แแแแขแ แแฅแขแแกแ แแ แจแแกแแแแก แจแแขแงแแแแแแแแก แจแแแแฎแแแก. แแแแก แจแแแแแ แแแแแ แแ แแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ, แแแฃ แแแกแแแแ แแ แชแแแแแแแ TON-แจแ แแแแแฅแแแงแแแแแแแ. แจแแแแแ แแฅแแแ แฃแแแ แแแแแแแแแแแแ แ แแแแแแแแ แแ แแแ แแ แแแกแแแแ แแแ แแ แแฎแแแแ แแแแก แจแแแแแ แแฅแแแ แฃแแแ แแแแแแแแแ แคแแแแ แแแแแ แกแแแ แข แแแแขแ แแฅแขแแ, แ แแแแแ แฅแกแแแ แแฆแแแก แกแแแแแแกแแแก แกแแแ แข แแแแขแ แแฅแขแแกแ แแ แแแกแจแ แแแแ แแชแแแแแก แจแแกแแแแฎแแ (แแแแแฌแแแแแแ, แ แแแแแแแช แแแแฎแแแแ แแ แแกแ แฃแแแแแ แกแแแ แขแก แแแแขแ แแฅแขแแแ).
แจแแแแแแ, แฉแแแ แแแกแ แฃแแแแ แแแแแฅแแแงแแแแแก แแแแก แแ แแแฆแแแ lottery-query.boc
แคแแแแ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ.
~/TON/build/crypto/fift -s requests/new-lottery.fif 0
แแ แแแแแแแฌแงแแแ แแแแแ แแ แแแฃแแ แคแแแแแแแก แจแแแแฎแแ: lottery-query.boc
, lottery.addr
, lottery.pk
.
แกแฎแแ แกแแแแแฎแแแแแ แแ แแแ, แจแแกแ แฃแแแแแก แแฃแ แแแแแแจแ แแแแฎแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแก.
new wallet address = 0:044910149dbeaf8eadbb2b28722e7d6a2dc6e264ec2f1d9bebd6fb209079bc2a
(Saving address to file lottery.addr)
Non-bounceable address (for init): 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
Bounceable address (for later access): kQAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8KpFY
แแแขแแ แแกแแก แแฃแแแกแแแแก แฉแแแ แแแแแแ แแแแ แแฎแแแแแก TON-แก
$ ./lite-client/lite-client -C ton-lite-client-test1.config.json
getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
แแ แฉแแแ แแแแแแแฎแแแ, แ แแ แแแแแ แแจแ แแ แแแกแแแแ แแแ แชแแ แแแแแ.
account state is empty
แฉแแแ แแแแแแแแแ แแแกแแแแ แแแ 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
2 แแ แแแ แแ แ แแแแแแแแ แฌแแแแก แจแแแแแ แแแกแ แฃแแแแ แแแแแ แแ แซแแแแแแก. แแ แแแแแแก แแแกแแแแแแแแ แแแงแแแแ
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
แแซแแแก แแ แแแแแชแแแแแแแแฃแแก (state:account_uninit
) แกแแแ แข แแแแขแ แแฅแขแ แแ แแแกแแแแ แแแ แแ แแแแแแกแ 1 แแแแแแ แแแ.
account state is (account
addr:(addr_std
anycast:nothing workchain_id:0 address:x044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A)
storage_stat:(storage_info
used:(storage_used
cells:(var_uint len:1 value:1)
bits:(var_uint len:1 value:103)
public_cells:(var_uint len:0 value:0)) last_paid:1583257959
due_payment:nothing)
storage:(account_storage last_trans_lt:3825478000002
balance:(currencies
grams:(nanograms
amount:(var_uint len:4 value:2000000000))
other:(extra_currencies
dict:hme_empty))
state:account_uninit))
x{C00044910149DBEAF8EADBB2B28722E7D6A2DC6E264EC2F1D9BEBD6FB209079BC2A20259C2F2F4CB3800000DEAC10776091DCD650004_}
last transaction lt = 3825478000001 hash = B043616AE016682699477FFF01E6E903878CDFD6846042BA1BFC64775E7AC6C4
account balance is 2000000000ng
แแฎแแ แแแแแ แแแแแแแฅแแแงแแแ แญแแแแแแ แแแแขแ แแฅแขแ. แแแแแฌแงแแ lite-client แแ แจแแแแกแ แฃแแแ.
> sendfile lottery-query.boc
[ 1][t 2][1583008371.631410122][lite-client.cpp:966][!testnode] sending query from file lottery-query.boc
[ 3][t 1][1583008371.828550100][lite-client.cpp:976][!query] external message status is 1
แแแแแ แจแแแแแแฌแแแ, แ แแ แแแแขแ แแฅแขแ แแแแแฅแแแงแแแแฃแแแ.
> last
> getaccount 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd
แกแฎแแ แกแแแแแฎแแแแแ แแ แแแ, แแแฆแแแ
storage:(account_storage last_trans_lt:3825499000002
balance:(currencies
grams:(nanograms
amount:(var_uint len:4 value:1987150999))
other:(extra_currencies
dict:hme_empty))
state:(account_active
แฉแแแ แแแแก แแฎแแแแแ account_active
.
แจแแกแแแแแแกแ แแแแแแแฃแแแแ แชแแแแแแแแแแ
แแฎแแ แแแแแ แจแแแฅแแแแ แแแแฎแแแแแแ แญแแแแแ แแแแขแ แแฅแขแแแ แฃแ แแแแ แแแแแกแแแแก.
แฃแคแ แ แแฃแกแขแแ, แแแ แแแแก แแแกแแแแ แแแก แจแแชแแแแก แแแแขแแแแแ แ แแแแ แช แแแแแฃแแแแแแแ แแแแฃแจแแแแ แก, แฎแแแ แแแแ แแก แแแแแแแแแแ แแ แแแแแแก แแแแแแแแแกแแแแก แแแกแแแฃแแ แแก แแแกแแแแ แแแ. แคแแฅแขแแแ แแแแ, แแแแแญแแ แแแแ แแแแแ แแแแแแแแแ, แ แแแแ แช แขแแกแขแจแ แแ แแแแแแก แแแแแแแแแกแแแแก.
แแก แแ แแก แแแกแแฏแ, แ แแแแแกแแช แฉแแแ แแแแฃแแแแแแแ แกแแแ แข แแแแขแ แแฅแขแก, แกแแแแช msg_seqno
165, action
2 แแ 9.5 แแ แแแ แแแกแแแแแแแแ.
<b 165 32 u, 2 7 u, 9500000000 Gram, b>
แแ แแแแแแแฌแงแแแ แจแแขแงแแแแแแแแแ แฎแแแแก แแแฌแแ แ แแฅแแแแ แแแ แแแ แแแกแแฆแแแแ lottery.pk
, แ แแแแแแช แแแ แ แจแแแฅแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แจแแฅแแแแกแแก.
แแแคแแ แแแชแแแก แแแฆแแแ แญแแแแแแ แแแแขแ แแฅแขแแแแ แแแฆแแแแก แแแแแแแแแก แแแแแงแแแแแแ
แแฎแแ แแแแแ แจแแแฎแแแแ, แแฃ แ แแแแ แฃแแแ แแแฃแจแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแฆแแแแก แแแแแแแแ.
แแแจแแแแ lite-client
แแ แแแฃแจแแแ แฉแแแ แแแแ แแแฌแแ แแแ แแแฆแแแแก แแแแแแแแ.
$ ./lite-client/lite-client -C ton-lite-client-test1.config.json
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd balance
arguments: [ 104128 ]
result: [ 64633878952 ]
...
ะ result
แจแแแชแแแก แคแฃแแฅแชแแแก แแแแ แแแแ แฃแแแแฃแ แแแแจแแแแแแแแก balance()
แฉแแแแ แญแแแแแแ แแแแขแ แแฅแขแแแแ.
แแแแแแก แแแแแแแแแแ แแแแแ แ แแแแแแแแ แแแแแแแกแแแแก.
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_seqno
...
arguments: [ 77871 ]
result: [ 1 ]
แฉแแแ แแแแแแฎแแแ แขแแ แแคแแแแก แแกแขแแ แแแก.
> runmethod 0QAESRAUnb6vjq27KyhyLn1qLcbiZOwvHZvr1vsgkHm8Ksyd get_orders
...
arguments: [ 67442 ]
result: [ ([0 1 1583258284 10000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [1 3 1583258347 4000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308] [2 1 1583259901 50000000000 0 74649920601963823558742197308127565167945016780694342660493511643532213172308]) ]
แฉแแแ แแแแแแแงแแแแแ lite-client-แก แแ แแแแแฆแแแ แแแแแแแแก แกแแแ แข แแแแขแ แแฅแขแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แกแแฉแแแแแแแแ แแแแกแแแขแแ.
แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแชแแแแแแก แฉแแแแแแ แแแแกแแแขแแ
แแ แแแแฌแแ แ Python-แแก แแแ แขแแแ แแแแกแแแขแ, แ แแ แญแแแแแแฃแ แ แแแแขแ แแฅแขแแก แแแแแชแแแแแ แแแกแแฎแแ แฎแแแแแ แแแแ แแฉแแแแ. แแฅ แแแขแแแฃแ แแ แแ แจแแแฉแแ แแแแ แแ แกแแแขแก แแแแแแแฅแแแงแแแ
แแแแฎแแแแแแ TON-แแ แแแแแแแแ Python
via lite-client
. แแแฎแแ แฎแแแฃแแแแแกแแแแก, แกแแแขแ แจแแคแฃแแฃแแแ Docker-แจแ แแ แแแแแฅแแแงแแแแฃแแแ Google Cloud-แแ.
แชแแแแแแก
แแฎแแ แแชแแแแ แแ แแแแก แแแแแแแแ แแฅแแแแ แจแแกแแแกแแแแ
Afterword
แกแขแแขแแ แแแชแแแแแแ แแ แซแแแ แแฆแแแฉแแแ, แแแแ แ แแแแแแ, แจแแกแแซแแแ แฃแคแ แ แแแแแแช แงแแคแแแแงแ, แแ แจแแกแแซแแแ แแฎแแแแ แแ แแแแแแแแแกแแแแก, แ แแแแแแแช แแ แแคแแ แ แแชแแก TON-แแก แจแแกแแฎแแ แแ แกแฃแ แก แแแฌแแ แแก แแ แแแแแแฅแแแงแแแก แญแแแแแแ แแแแขแ แแฅแขแ, แ แแแแแแแแแช แแ แแ แแก แงแแแแแแ แแแ แขแแแ แฃแ แแแแ แแแแ. แจแแกแแซแแแ, แแแแแแ แแ แ แแ แฃแคแ แ แแแ แขแแแแ แแแฎแกแแแก.
แจแแกแแซแแแ แแแแฎแแ แชแแแแแแแก แแแแแแ แแ แแฃแแฅแขแ แฃแคแ แ แแคแแฅแขแฃแ แแ แแ แแแแแแแขแฃแ แแ แแแแแแแแฃแแแงแ, แแแแ แแ แแแจแแ แกแขแแขแแแก แแแแแแแแแแก แแแแแ แฃแคแ แ แแแขแ แแ แ แแแกแญแแ แแแแแแ. แแกแแแ แจแแกแแซแแแแแแแ แกแแแแ แจแแชแแแแ แแแแฃแจแแ แแ แ แแฆแแช แแแ แแแแแแ, แแกแ แ แแ, แแฃ แ แแแแ แกแแ แแแแฃแแก แแแแแแแ, แฃแแแ แแแแงแ แแแแ แแคแแชแแแแฃแ แแแแฃแแแแขแแชแแแก แแ แแคแแชแแแแฃแ แกแแชแแแก TON แแแแแ.
แฃแแแ แแฆแแแแจแแแก, แ แแ แ แแแแแ แแแแแ TON แฏแแ แแแแแ แแฅแขแแฃแ แ แแแแแแแแ แแแแก แแขแแแแแ, แจแแแซแแแแ แแแฎแแแก แชแแแแแแแแแ, แ แแแแแแแช แแ แฆแแแแก แแ แกแขแแขแแแก แ แแแแแแแ แกแแคแแฎแฃแ แก (แ แแช แแแฎแแ แฌแแ แแก แแ แแก, แแ แฃแแแ แแแแแกแฌแแ แ), แแแแ แแ แแแแแแ แแแแแแแ แแ แแก แแแแแแแแ แกแแแแ แแฃแแแ แจแแแชแแแแแก.
TON-แแก แแแแแแแแแ แแ แแแกแแฃแแ แแ. แจแแกแแซแแแ, แแแแขแคแแ แแ แแแฎแแแก แ แแฆแแช แแแแ แแ แฉแแแ แฃแแแ แแแแแแงแแ แแ แ แแแก แจแแกแฌแแแแแก แแ แแฎแแแแ แแแจแ แแแแฃแแแแแ แฉแแแแก แแ แแแฃแฅแขแแแก.
แแกแแแ แแ แแก Libra แคแแแกแแฃแฅแแแแ, แ แแแแแกแแช แฐแงแแแก แแแแฎแแแ แแแแแแ แฃแคแ แ แแแแ แแแขแแแชแแฃแ แ แแฃแแแขแแ แแ, แแแแ แ TON. แแ แแแแฅแแแก แแ แแคแแ แ แแแชแ แกแแกแฌแแ แแก แจแแกแแฎแแ, แแฃ แแแแกแฏแแแแแ แแฅแขแแแแแแก แคแแ แฃแแแก แแแฎแแแแแ, แแแชแแแแแแ แแแขแ แแฅแขแแแแแแ แแแแ แ TON แกแแแแแแแแแแแจแ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแแแแแแแแ แแแ แแ TON แกแแแแแแแแแแ แฃแคแ แ แฐแแแแก แแแแแ แแ แแฃแแแก, แ แแช แแกแแแ แแแแแ แแ.
แแแขแแ แแขแฃแ แ
- แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ TON-แแ:
https://test.ton.org - แแคแแชแแแแฃแ แ TON แกแแชแแแ:
https://github.com/ton-blockchain/ton - แแคแแชแแแแฃแ แ แกแแคแฃแแ แกแฎแแแแแกแฎแแ แแแแขแคแแ แแแกแแแแก:
https://wallet.ton.org - แญแแแแแแ แแแแขแ แแฅแขแแก แกแแชแแแ แแ แกแขแแขแแแแแ:
https://github.com/raiym/astonished - แแแฃแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแกแแแขแแ:
https://ton-lottery.appspot.com - Visual Studio แแแแแก แแแคแแ แแแแแแก แกแแชแแแ FunC-แแกแแแแก:
https://github.com/raiym/func-visual-studio-plugin - แแกแแฃแแ แแ TON-แแก แจแแกแแฎแแ Telegram-แจแ, แ แแแแช แซแแแแแ แแแแแแฎแแแ แ แแแแก แแแ แแแแแแจแ แกแแฌแงแแก แแขแแแแ. แแคแแฅแ แแ, แแ แแฅแแแแ แจแแชแแแแ, แแฃ แแแขแงแแ, แ แแ แแ แแก แงแแแแ, แแแแช แ แแฆแแช แแแฌแแ แ TON-แกแแแแก. แแฅแแช แจแแแแซแแแแ แกแแชแแแแ แแ แแแ แแแแแฎแแแแ.
https://t.me/tondev_ru - แแแแแ แแ แแ แฉแแขแ TON-แแก แจแแกแแฎแแ, แ แแแแแจแแช แแแแแแ แกแแกแแ แแแแแ แแแคแแ แแแชแแ:
https://t.me/TONgramDev - แแแแแฃแ แกแแก แแแ แแแแ แแขแแแ:
https://contest.com/blockchain - แแแแแฃแ แกแแก แแแแ แ แขแฃแ แ:
https://contest.com/blockchain-2
แฌแงแแ แ: www.habr.com