mirror of
https://github.com/danog/toncontest.git
synced 2024-11-26 12:04:50 +01:00
First commit
This commit is contained in:
parent
5c8ce71d91
commit
6a5a7f9c3c
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "lib"]
|
||||
path = lib
|
||||
url = https://github.com/ton-blockchain/ton/
|
1
lib
Submodule
1
lib
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit fd7a8de9708c9ece8d802890519735b55bc99a8e
|
3
toolchain/bin/fift
Executable file
3
toolchain/bin/fift
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
$TONLIB_HOME/build/fift "$@"
|
3
toolchain/bin/funcompile
Executable file
3
toolchain/bin/funcompile
Executable file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
/home/daniil/repos/ton/build/crypto/func -WRS -o "$(basename $1 .fc).fif" "$TONLIB_HOME/crypto/smartcont/stdlib.fc" "$@"
|
27
toolchain/build.sh
Executable file
27
toolchain/build.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
git submodule update --init --recursive
|
||||
|
||||
cd lib
|
||||
|
||||
grep -q TONLIB_HOME $HOME/.bashrc || {
|
||||
echo "export TONLIB_HOME=$PWD" >> $HOME/.bashrc
|
||||
echo 'export FIFTPATH=$TONLIB_HOME/crypto/fift/lib:$TONLIB_HOME/crypto/smartcont' >> $HOME/.bashrc
|
||||
echo 'export PATH=$PATH:$TONLIB_HOME/../toolchain/bin' >> $HOME/.bashrc
|
||||
}
|
||||
|
||||
|
||||
git pull origin master
|
||||
|
||||
mkdir -p build
|
||||
cd build
|
||||
[ ! -f CMakeCache.txt ] && {
|
||||
cmake ..
|
||||
}
|
||||
cmake --build . --target lite-client
|
||||
cmake --build . --target fift
|
||||
cmake --build . --target func
|
||||
|
||||
cd ../..
|
38
wallet-code.fc
Normal file
38
wallet-code.fc
Normal file
@ -0,0 +1,38 @@
|
||||
;; Simple wallet smart contract
|
||||
|
||||
() recv_internal(slice in_msg) impure {
|
||||
;; do nothing for internal messages
|
||||
}
|
||||
|
||||
() recv_external(slice in_msg) impure {
|
||||
var signature = in_msg~load_bits(512);
|
||||
var cs = in_msg;
|
||||
var (msg_seqno, valid_until) = (cs~load_uint(32), cs~load_uint(32));
|
||||
throw_if(35, valid_until <= now());
|
||||
var ds = get_data().begin_parse();
|
||||
var (stored_seqno, public_key) = (ds~load_uint(32), ds~load_uint(256));
|
||||
ds.end_parse();
|
||||
throw_unless(33, msg_seqno == stored_seqno);
|
||||
throw_unless(34, check_signature(slice_hash(in_msg), signature, public_key));
|
||||
accept_message();
|
||||
cs~touch();
|
||||
|
||||
var op = cs~load_uint(8);
|
||||
if (op == 1) {
|
||||
set_code(cs~load_ref());
|
||||
} else {
|
||||
while (cs.slice_refs()) {
|
||||
var mode = cs~load_uint(8);
|
||||
send_raw_message(cs~load_ref(), mode);
|
||||
}
|
||||
}
|
||||
|
||||
cs.end_parse();
|
||||
set_data(begin_cell().store_uint(stored_seqno + 1, 32).store_uint(public_key, 256).end_cell());
|
||||
}
|
||||
|
||||
;; Get methods
|
||||
|
||||
int seqno() method_id {
|
||||
return get_data().begin_parse().preload_uint(32);
|
||||
}
|
Loading…
Reference in New Issue
Block a user