1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Add extra currencies to c7 in tonlib runGetMethod

This commit is contained in:
SpyCheese 2025-01-13 17:39:56 +03:00
parent 46d4e12b4c
commit dc2f0dad81
3 changed files with 28 additions and 19 deletions

View file

@ -153,10 +153,11 @@ td::Ref<vm::Tuple> prepare_vm_c7(SmartContract::Args args, td::Ref<vm::Cell> cod
td::make_refint(0), // actions:Integer td::make_refint(0), // actions:Integer
td::make_refint(0), // msgs_sent:Integer td::make_refint(0), // msgs_sent:Integer
td::make_refint(now), // unixtime:Integer td::make_refint(now), // unixtime:Integer
td::make_refint(0), //TODO: // block_lt:Integer td::make_refint(0), // block_lt:Integer (TODO)
td::make_refint(0), //TODO: // trans_lt:Integer td::make_refint(0), // trans_lt:Integer (TODO)
std::move(rand_seed_int), // rand_seed:Integer std::move(rand_seed_int), // rand_seed:Integer
block::CurrencyCollection(args.balance).as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)] block::CurrencyCollection(args.balance, args.extra_currencies)
.as_vm_tuple(), // balance_remaining:[Integer (Maybe Cell)]
vm::load_cell_slice_ref(address), // myself:MsgAddressInt vm::load_cell_slice_ref(address), // myself:MsgAddressInt
vm::StackEntry::maybe(config) // vm::StackEntry::maybe(td::Ref<vm::Cell>()) vm::StackEntry::maybe(config) // vm::StackEntry::maybe(td::Ref<vm::Cell>())
}; };

View file

@ -64,6 +64,7 @@ class SmartContract : public td::CntObject {
bool ignore_chksig{false}; bool ignore_chksig{false};
td::uint64 amount{0}; td::uint64 amount{0};
td::uint64 balance{0}; td::uint64 balance{0};
td::Ref<vm::Cell> extra_currencies;
int vm_log_verbosity_level{0}; int vm_log_verbosity_level{0};
bool debug_enabled{false}; bool debug_enabled{false};
@ -121,6 +122,10 @@ class SmartContract : public td::CntObject {
this->balance = balance; this->balance = balance;
return std::move(*this); return std::move(*this);
} }
Args&& set_extra_currencies(td::Ref<vm::Cell> extra_currencies) {
this->extra_currencies = std::move(extra_currencies);
return std::move(*this);
}
Args&& set_address(block::StdAddress address) { Args&& set_address(block::StdAddress address) {
this->address = address; this->address = address;
return std::move(*this); return std::move(*this);

View file

@ -1050,9 +1050,11 @@ class Query {
} }
vm::GasLimits gas_limits = compute_gas_limits(td::make_refint(raw_.source->get_balance()), gas_limits_prices); vm::GasLimits gas_limits = compute_gas_limits(td::make_refint(raw_.source->get_balance()), gas_limits_prices);
auto res = smc.write().send_external_message(raw_.message_body, ton::SmartContract::Args() auto res = smc.write().send_external_message(raw_.message_body,
ton::SmartContract::Args()
.set_limits(gas_limits) .set_limits(gas_limits)
.set_balance(raw_.source->get_balance()) .set_balance(raw_.source->get_balance())
.set_extra_currencies(raw_.source->get_extra_currencies())
.set_now(raw_.source->get_sync_time()) .set_now(raw_.source->get_sync_time())
.set_ignore_chksig(ignore_chksig) .set_ignore_chksig(ignore_chksig)
.set_address(raw_.source->get_address()) .set_address(raw_.source->get_address())
@ -4790,6 +4792,7 @@ td::Status TonlibClient::do_request(const tonlib_api::smc_runGetMethod& request,
} }
args.set_stack(std::move(stack)); args.set_stack(std::move(stack));
args.set_balance(it->second->get_balance()); args.set_balance(it->second->get_balance());
args.set_extra_currencies(it->second->get_extra_currencies());
args.set_now(it->second->get_sync_time()); args.set_now(it->second->get_sync_time());
args.set_address(it->second->get_address()); args.set_address(it->second->get_address());