mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Merge branch 'testnet' into accelerator
This commit is contained in:
commit
18031ff98f
24 changed files with 454 additions and 131 deletions
|
@ -426,7 +426,7 @@ bool store_validator_list_hash(vm::CellBuilder& cb) {
|
|||
LOG_CHECK(vset) << "unpacked validator set is empty";
|
||||
auto ccvc = block::Config::unpack_catchain_validators_config(config_dict.lookup_ref(td::BitArray<32>{28}));
|
||||
ton::ShardIdFull shard{ton::masterchainId};
|
||||
auto nodes = block::Config::do_compute_validator_set(ccvc, shard, *vset, now, 0);
|
||||
auto nodes = block::Config::do_compute_validator_set(ccvc, shard, *vset, 0);
|
||||
LOG_CHECK(!nodes.empty()) << "validator node list in unpacked validator set is empty";
|
||||
auto vset_hash = block::compute_validator_set_hash(0, shard, std::move(nodes));
|
||||
LOG(DEBUG) << "initial validator set hash is " << vset_hash;
|
||||
|
|
|
@ -1746,7 +1746,7 @@ ton::CatchainSeqno ConfigInfo::get_shard_cc_seqno(ton::ShardIdFull shard) const
|
|||
|
||||
std::vector<ton::ValidatorDescr> Config::compute_validator_set(ton::ShardIdFull shard, const block::ValidatorSet& vset,
|
||||
ton::UnixTime time, ton::CatchainSeqno cc_seqno) const {
|
||||
return do_compute_validator_set(get_catchain_validators_config(), shard, vset, time, cc_seqno);
|
||||
return do_compute_validator_set(get_catchain_validators_config(), shard, vset, cc_seqno);
|
||||
}
|
||||
|
||||
std::vector<ton::ValidatorDescr> Config::compute_validator_set(ton::ShardIdFull shard, ton::UnixTime time,
|
||||
|
@ -1773,7 +1773,7 @@ std::vector<ton::ValidatorDescr> ConfigInfo::compute_validator_set_cc(ton::Shard
|
|||
if (cc_seqno_delta) {
|
||||
cc_seqno = *cc_seqno_delta += cc_seqno;
|
||||
}
|
||||
return do_compute_validator_set(get_catchain_validators_config(), shard, vset, time, cc_seqno);
|
||||
return do_compute_validator_set(get_catchain_validators_config(), shard, vset, cc_seqno);
|
||||
}
|
||||
|
||||
std::vector<ton::ValidatorDescr> ConfigInfo::compute_validator_set_cc(ton::ShardIdFull shard, ton::UnixTime time,
|
||||
|
@ -1856,9 +1856,8 @@ int ValidatorSet::lookup_public_key(td::ConstBitPtr pubkey) const {
|
|||
return -1;
|
||||
}
|
||||
|
||||
std::vector<ton::ValidatorDescr> Config::do_compute_validator_set(const block::CatchainValidatorsConfig& ccv_conf,
|
||||
ton::ShardIdFull shard,
|
||||
const block::ValidatorSet& vset, ton::UnixTime time,
|
||||
std::vector<ton::ValidatorDescr> Config::do_compute_validator_set(const CatchainValidatorsConfig& ccv_conf,
|
||||
ton::ShardIdFull shard, const ValidatorSet& vset,
|
||||
ton::CatchainSeqno cc_seqno) {
|
||||
// LOG(DEBUG) << "in Config::do_compute_validator_set() for " << shard.to_str() << " ; cc_seqno=" << cc_seqno;
|
||||
std::vector<ton::ValidatorDescr> nodes;
|
||||
|
|
|
@ -456,10 +456,11 @@ class ShardConfig {
|
|||
ShardConfig() = default;
|
||||
ShardConfig(const ShardConfig& other);
|
||||
ShardConfig(ShardConfig&& other) = default;
|
||||
ShardConfig(Ref<vm::Cell> shard_hashes, Ref<McShardHash> mc_shard_hash = {})
|
||||
explicit ShardConfig(Ref<vm::Cell> shard_hashes, Ref<McShardHash> mc_shard_hash = {})
|
||||
: shard_hashes_(std::move(shard_hashes)), mc_shard_hash_(std::move(mc_shard_hash)) {
|
||||
init();
|
||||
}
|
||||
ShardConfig& operator=(ShardConfig&& other) = default;
|
||||
bool is_valid() const {
|
||||
return valid_;
|
||||
}
|
||||
|
@ -670,9 +671,8 @@ class Config {
|
|||
BurningConfig get_burning_config() const;
|
||||
td::Ref<vm::Tuple> get_unpacked_config_tuple(ton::UnixTime now) const;
|
||||
PrecompiledContractsConfig get_precompiled_contracts_config() const;
|
||||
static std::vector<ton::ValidatorDescr> do_compute_validator_set(const block::CatchainValidatorsConfig& ccv_conf,
|
||||
ton::ShardIdFull shard,
|
||||
const block::ValidatorSet& vset, ton::UnixTime time,
|
||||
static std::vector<ton::ValidatorDescr> do_compute_validator_set(const CatchainValidatorsConfig& ccv_conf,
|
||||
ton::ShardIdFull shard, const ValidatorSet& vset,
|
||||
ton::CatchainSeqno cc_seqno);
|
||||
|
||||
static td::Result<std::unique_ptr<Config>> unpack_config(Ref<vm::Cell> config_root,
|
||||
|
|
|
@ -13,7 +13,7 @@ variable extra-currencies
|
|||
{ extra-currencies @ cc+ extra-currencies ! } : extra-cc+!
|
||||
|
||||
begin-options
|
||||
" <filename-base> <dest-addr> <subwallet-id> <seqno> <amount> [-x <extra-amount>*<extra-currency-id>] [-n|-b] [-t<timeout>] [-B <body-boc>] [-C <comment>] [<savefile>]" +cr +tab
|
||||
" <filename-base> <dest-addr> <subwallet-id> <seqno> <amount> [-x <extra-amount>*<extra-currency-id>] [-n|-b] [-t<timeout>] [-B <body-boc>] [-C <comment>] [-I <init-boc>] [<savefile>]" +cr +tab
|
||||
+"Creates a request to advanced wallet created by new-wallet-v3.fif, with private key loaded from file <filename-base>.pk "
|
||||
+"and address from <filename-base>.addr, and saves it into <savefile>.boc ('wallet-query.boc' by default)"
|
||||
disable-digit-options generic-help-setopt
|
||||
|
@ -29,6 +29,8 @@ begin-options
|
|||
"Sets the payload of the transfer message" option-help
|
||||
"C" "--comment" { =: comment } short-long-option-arg
|
||||
"Sets the comment to be sent in the transfer message" option-help
|
||||
"I" "--with-init" { =: init-file } short-long-option-arg
|
||||
"Indicates filename with BoC containing StateInit for internal message" option-help
|
||||
"m" "--mode" { parse-int =: send-mode } short-long-option-arg
|
||||
"Sets transfer mode (0..255) for SENDRAWMSG (" send-mode (.) $+ +" by default)"
|
||||
option-help
|
||||
|
@ -57,14 +59,18 @@ file-base +".pk" load-keypair nip constant wallet_pk
|
|||
def? body-boc-file { @' body-boc-file file>B B>boc } { comment simple-transfer-body } cond
|
||||
constant body-cell
|
||||
|
||||
def? init-file { @' init-file file>B B>boc <s b{11} swap |_ } { b{0} } cond
|
||||
=: state-init
|
||||
|
||||
."Transferring " amount .GR+cc ."to account "
|
||||
dest_addr 2dup bounce 7 + .Addr ." = " .addr
|
||||
."subwallet_id=0x" subwallet_id x.
|
||||
."seqno=0x" seqno x. ."bounce=" bounce . cr
|
||||
."Body of transfer message is " body-cell <s csr. cr
|
||||
."StateInit is " state-init csr. cr
|
||||
|
||||
// create a message
|
||||
<b b{01} s, bounce 1 i, b{000} s, dest_addr Addr, amount Gram+cc, 0 9 64 32 + + u,
|
||||
<b b{01} s, bounce 1 i, b{000} s, dest_addr Addr, amount Gram+cc, 0 8 64 32 + + u, state-init s,
|
||||
body-cell <s 2dup 1 s-fits-with? not rot over 1 i, -rot { drop body-cell ref, } { s, } cond
|
||||
b>
|
||||
<b subwallet_id 32 u, now timeout + 32 u, seqno 32 u, send-mode 8 u, swap ref, b>
|
||||
|
|
|
@ -373,11 +373,11 @@ class VmState final : public VmStateInterface {
|
|||
int jump_to(Ref<Continuation> cont) {
|
||||
int res = 0, cnt = 0;
|
||||
while (cont.not_null()) {
|
||||
cnt++;
|
||||
cont = cont->is_unique() ? cont.unique_write().jump_w(this, res) : cont->jump(this, res);
|
||||
}
|
||||
if (global_version >= 9 && cnt > free_nested_cont_jump) {
|
||||
consume_gas(cnt - free_nested_cont_jump);
|
||||
cnt++;
|
||||
if (cnt > free_nested_cont_jump && global_version >= 9) {
|
||||
consume_gas(1);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue