mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
New extra currency behavior (#1539)
This commit is contained in:
parent
1b70e48327
commit
b3b2bd1c3c
17 changed files with 228 additions and 65 deletions
|
@ -1153,8 +1153,12 @@ td::Result<CellStorageStat::CellInfo> CellStorageStat::add_used_storage(Ref<vm::
|
|||
return ins.first->second;
|
||||
}
|
||||
}
|
||||
vm::CellSlice cs{vm::NoVm{}, std::move(cell)};
|
||||
return add_used_storage(std::move(cs), kill_dup, skip_count_root);
|
||||
vm::CellSlice cs{vm::NoVm{}, cell};
|
||||
TRY_RESULT(res, add_used_storage(std::move(cs), kill_dup, skip_count_root));
|
||||
if (kill_dup) {
|
||||
seen[cell->get_hash()] = res;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
void NewCellStorageStat::add_cell(Ref<Cell> cell) {
|
||||
|
|
|
@ -1761,6 +1761,10 @@ int exec_send_message(VmState* st) {
|
|||
vm::VmStorageStat stat(max_cells);
|
||||
CellSlice cs = load_cell_slice(msg_cell);
|
||||
cs.skip_first(cs.size());
|
||||
if (st->get_global_version() >= 10 && have_extra_currencies) {
|
||||
// Skip extra currency dict
|
||||
cs.advance_refs(1);
|
||||
}
|
||||
stat.add_storage(cs);
|
||||
|
||||
if (!ext_msg) {
|
||||
|
@ -1773,7 +1777,9 @@ int exec_send_message(VmState* st) {
|
|||
if (value.is_null()) {
|
||||
throw VmError{Excno::type_chk, "invalid param BALANCE"};
|
||||
}
|
||||
have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null();
|
||||
if (st->get_global_version() < 10) {
|
||||
have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null();
|
||||
}
|
||||
} else if (mode & 64) { // value += value of incoming message
|
||||
Ref<Tuple> balance = get_param(st, 11).as_tuple();
|
||||
if (balance.is_null()) {
|
||||
|
@ -1784,7 +1790,9 @@ int exec_send_message(VmState* st) {
|
|||
throw VmError{Excno::type_chk, "invalid param INCOMINGVALUE"};
|
||||
}
|
||||
value += balance_grams;
|
||||
have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null();
|
||||
if (st->get_global_version() < 10) {
|
||||
have_extra_currencies |= !tuple_index(balance, 1).as_cell().is_null();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue