AlexG
2 years ago
commit
b84954d051
37 changed files with 20359 additions and 0 deletions
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization |
||||
* text=auto |
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectRootManager"> |
||||
<output url="file://$PROJECT_DIR$/out" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="ProjectModuleManager"> |
||||
<modules> |
||||
<module fileurl="file://$PROJECT_DIR$/.idea/tact-jetton.iml" filepath="$PROJECT_DIR$/.idea/tact-jetton.iml" /> |
||||
</modules> |
||||
</component> |
||||
</project> |
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<module type="JAVA_MODULE" version="4"> |
||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
||||
<exclude-output /> |
||||
<content url="file://$MODULE_DIR$" /> |
||||
<orderEntry type="inheritedJdk" /> |
||||
<orderEntry type="sourceFolder" forTests="false" /> |
||||
</component> |
||||
</module> |
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<module type="JAVA_MODULE" version="4"> |
||||
<component name="NewModuleRootManager" inherit-compiler-output="true"> |
||||
<exclude-output /> |
||||
<content url="file://$MODULE_DIR$" /> |
||||
<orderEntry type="inheritedJdk" /> |
||||
<orderEntry type="sourceFolder" forTests="false" /> |
||||
</component> |
||||
</module> |
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="VcsDirectoryMappings"> |
||||
<mapping directory="$PROJECT_DIR$/tact-template" vcs="Git" /> |
||||
</component> |
||||
</project> |
@ -0,0 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<project version="4"> |
||||
<component name="AutoImportSettings"> |
||||
<option name="autoReloadType" value="SELECTIVE" /> |
||||
</component> |
||||
<component name="ChangeListManager"> |
||||
<list default="true" id="80ea322e-0387-4b61-9c4a-17d8dd5f7086" name="Changes" comment="" /> |
||||
<option name="SHOW_DIALOG" value="false" /> |
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" /> |
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> |
||||
<option name="LAST_RESOLUTION" value="IGNORE" /> |
||||
</component> |
||||
<component name="Git.Settings"> |
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/tact-template" /> |
||||
</component> |
||||
<component name="MarkdownSettingsMigration"> |
||||
<option name="stateVersion" value="1" /> |
||||
</component> |
||||
<component name="ProjectId" id="2JoaNDAd4L1iMZoU4AVhl1PXU0U" /> |
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" /> |
||||
<component name="ProjectViewState"> |
||||
<option name="hideEmptyMiddlePackages" value="true" /> |
||||
<option name="showLibraryContents" value="true" /> |
||||
</component> |
||||
<component name="PropertiesComponent"><![CDATA[{ |
||||
"keyToString": { |
||||
"RunOnceActivity.OpenProjectViewOnStart": "true", |
||||
"RunOnceActivity.ShowReadmeOnStart": "true", |
||||
"WebServerToolWindowFactoryState": "false", |
||||
"last_opened_file_path": "/Users/alexg/Dev/tact-jetton", |
||||
"node.js.detected.package.eslint": "true", |
||||
"node.js.detected.package.tslint": "true", |
||||
"node.js.selected.package.eslint": "(autodetect)", |
||||
"node.js.selected.package.tslint": "(autodetect)", |
||||
"nodejs_package_manager_path": "yarn", |
||||
"ts.external.directory.path": "/Users/alexg/Dev/tact-jetton/node_modules/typescript/lib" |
||||
} |
||||
}]]></component> |
||||
<component name="RecentsManager"> |
||||
<key name="MoveFile.RECENT_KEYS"> |
||||
<recent name="$PROJECT_DIR$/sources" /> |
||||
<recent name="$PROJECT_DIR$" /> |
||||
</key> |
||||
</component> |
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> |
||||
<component name="TaskManager"> |
||||
<task active="true" id="Default" summary="Default task"> |
||||
<changelist id="80ea322e-0387-4b61-9c4a-17d8dd5f7086" name="Changes" comment="" /> |
||||
<created>1672746847077</created> |
||||
<option name="number" value="Default" /> |
||||
<option name="presentableId" value="Default" /> |
||||
<updated>1672746847077</updated> |
||||
<workItem from="1672746848277" duration="3955000" /> |
||||
</task> |
||||
<servers /> |
||||
</component> |
||||
<component name="TypeScriptGeneratedFilesManager"> |
||||
<option name="version" value="3" /> |
||||
</component> |
||||
<component name="Vcs.Log.Tabs.Properties"> |
||||
<option name="TAB_STATES"> |
||||
<map> |
||||
<entry key="MAIN"> |
||||
<value> |
||||
<State /> |
||||
</value> |
||||
</entry> |
||||
</map> |
||||
</option> |
||||
</component> |
||||
</project> |
@ -0,0 +1,13 @@
|
||||
# TACT template project |
||||
|
||||
This project has ready to use TACT compiler, typescript + jest with ton-contract-executor, example how to do tests. |
||||
|
||||
```bash |
||||
yarn test # To test contract |
||||
yarn build # To build contract |
||||
yarn deploy # To deploy contract |
||||
``` |
||||
|
||||
## Licence |
||||
|
||||
MIT |
@ -0,0 +1,7 @@
|
||||
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ |
||||
module.exports = { |
||||
preset: 'ts-jest', |
||||
testEnvironment: 'node', |
||||
testPathIgnorePatterns: ["/node_modules/","/dist/"], |
||||
maxWorkers: 1 |
||||
}; |
@ -0,0 +1,34 @@
|
||||
{ |
||||
"name": "tact-template", |
||||
"version": "1.0.0", |
||||
"main": "index.js", |
||||
"repository": "https://github.com/ton-community/tact-template.git", |
||||
"author": "Steve Korshakov <steve@korshakov.com>", |
||||
"license": "MIT", |
||||
"scripts": { |
||||
"build": "tact --config tact.config.json", |
||||
"test": "jest", |
||||
"deploy": "ts-node sources/jetton.deploy.ts" |
||||
}, |
||||
"dependencies": { |
||||
"@types/jest": "^29.2.4", |
||||
"@types/node": "^18.11.14", |
||||
"@types/qs": "^6.9.7", |
||||
"jest": "^29.3.1", |
||||
"prando": "^6.0.1", |
||||
"qs": "^6.11.0", |
||||
"ton": "^13.2.0", |
||||
"ton-contract-executor": "^0.6.0", |
||||
"ton-core": "^0.36.1", |
||||
"ton-crypto": "^3.2.0", |
||||
"ton-emulator": "^1.2.0", |
||||
"ton-nodejs": "^1.4.3", |
||||
"ton-tact": "^0.5.0", |
||||
"ts-jest": "^29.0.3", |
||||
"ts-node": "^10.9.1", |
||||
"typescript": "^4.9.4" |
||||
}, |
||||
"resolutions": { |
||||
"ton": "12.3.2" |
||||
} |
||||
} |
@ -0,0 +1,20 @@
|
||||
import { contractAddress, toNano } from "ton"; |
||||
import { packAdd, SampleTactContract_init } from "./output/sample_SampleTactContract"; |
||||
import { printAddress, printDeploy, printHeader } from "./utils/print"; |
||||
import { randomAddress } from "./utils/randomAddress"; |
||||
|
||||
(async () => { //need to changes for jetton
|
||||
|
||||
// Parameters
|
||||
// let owner = randomAddress(0, 'some-owner'); // Replace owner with your address
|
||||
// let packed = packAdd({ $$type: 'Add', amount: 10n }); // Replace if you want another message used
|
||||
// let init = await SampleTactContract_init(owner);
|
||||
// let address = contractAddress({ workchain: 0, initialCode: init.code, initialData: init.data });
|
||||
// let deployAmount = toNano(10);
|
||||
// let testnet = true;
|
||||
//
|
||||
// // Print basics
|
||||
// printHeader('SampleTactContract');
|
||||
// printAddress(address);
|
||||
// printDeploy(init, deployAmount, packed, testnet);
|
||||
})(); |
@ -0,0 +1,6 @@
|
||||
{ |
||||
"name": "TACT", |
||||
"description": "TACT Test Jetton", |
||||
"symbol": "TACT", |
||||
"decimals": 9 |
||||
} |
@ -0,0 +1,26 @@
|
||||
import { toNano } from "ton-core"; |
||||
import { ContractSystem } from "ton-emulator"; |
||||
import {SampleJetton, SampleJetton_init} from './output/jetton_SampleJetton'; |
||||
|
||||
describe('jetton', () => { |
||||
it('should deploy', async () => { |
||||
|
||||
// Create jetton
|
||||
let system = await ContractSystem.create(); |
||||
let owner = system.treasure('owner'); |
||||
let contract = system.open(await SampleJetton.fromInit(owner.address, null)); |
||||
let tracker = system.track(contract.address); |
||||
|
||||
// Mint
|
||||
await contract.send(owner, { value: toNano(1) }, { $$type: 'Mint', amount: toNano(1000000) }); |
||||
await system.run(); |
||||
expect(tracker.events()).toMatchSnapshot(); |
||||
|
||||
// Check owner
|
||||
expect((await contract.getOwner()).toString()).toEqual(owner.address.toString()); |
||||
|
||||
// Data
|
||||
let data = await contract.getGetJettonData(); |
||||
// console.warn(data);
|
||||
}); |
||||
}); |
@ -0,0 +1,30 @@
|
||||
import "@stdlib/jetton"; |
||||
|
||||
message Mint { |
||||
amount: Int; |
||||
} |
||||
|
||||
contract SampleJetton with Jetton { |
||||
|
||||
totalSupply: Int as coins; |
||||
owner: Address; |
||||
content: Cell?; |
||||
mintable: Bool; |
||||
|
||||
init(owner: Address, content: Cell?) { |
||||
self.totalSupply = 0; |
||||
self.owner = owner; |
||||
self.mintable = true; |
||||
self.content = content; |
||||
} |
||||
|
||||
receive(msg: Mint) { |
||||
let ctx: Context = context(); |
||||
self.mint(ctx.sender, msg.amount, ctx.sender); |
||||
} |
||||
|
||||
receive("Mint!") { |
||||
let ctx: Context = context(); |
||||
self.mint(ctx.sender, 1000000000, ctx.sender); |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -0,0 +1,437 @@
|
||||
int __tact_my_balance() inline { |
||||
return pair_first(get_balance()); |
||||
} |
||||
|
||||
forall X -> X __tact_not_null(X x) { throw_if(128, null?(x)); return x; } |
||||
|
||||
global (int, slice, int, slice) __tact_context; |
||||
global cell __tact_context_sys; |
||||
|
||||
(int, slice, int, slice) __tact_context_get() inline { return __tact_context; } |
||||
|
||||
() __tact_verify_address(slice address) inline { |
||||
throw_unless(134, address.slice_bits() != 267); |
||||
} |
||||
|
||||
(slice, slice) __tact_load_address(slice cs) inline { |
||||
slice raw = cs~load_msg_addr(); |
||||
__tact_verify_address(raw); |
||||
return (cs, raw); |
||||
} |
||||
|
||||
(slice, slice) __tact_load_address_opt(slice cs) inline { |
||||
slice raw = cs~load_msg_addr(); |
||||
if (raw.preload_uint(2) != 0) { |
||||
__tact_verify_address(raw); |
||||
return (cs, raw); |
||||
} else { |
||||
return (cs, null()); |
||||
} |
||||
} |
||||
|
||||
builder __tact_store_address(builder b, slice address) inline { |
||||
__tact_verify_address(address); |
||||
b = b.store_slice(address); |
||||
return b; |
||||
} |
||||
|
||||
builder __tact_store_address_opt(builder b, slice address) inline { |
||||
if (null?(address)) { |
||||
b = b.store_uint(0, 2); |
||||
return b; |
||||
} else { |
||||
return __tact_store_address(b, address); |
||||
} |
||||
} |
||||
|
||||
slice __tact_compute_contract_address(int chain, cell code, cell data) { |
||||
var b = begin_cell(); |
||||
b = b.store_uint(0, 2); |
||||
b = b.store_uint(3, 2); |
||||
b = b.store_uint(0, 1); |
||||
b = b.store_ref(code); |
||||
b = b.store_ref(data); |
||||
var hash = cell_hash(b.end_cell()); |
||||
var b2 = begin_cell(); |
||||
b2 = b2.store_uint(2, 2); |
||||
b2 = b2.store_uint(0, 1); |
||||
b2 = b2.store_int(chain, 8); |
||||
b2 = b2.store_uint(hash, 256); |
||||
return b2.end_cell().begin_parse(); |
||||
} |
||||
|
||||
int __tact_address_eq(slice a, slice b) inline { |
||||
return equal_slice_bits(a, b); |
||||
} |
||||
|
||||
int __tact_address_neq(slice a, slice b) inline { |
||||
return ~ equal_slice_bits(a, b); |
||||
} |
||||
|
||||
cell __tact_dict_set_code(cell dict, int id, cell code) inline { |
||||
return udict_set_ref(dict, 16, id, code); |
||||
} |
||||
|
||||
cell __tact_dict_get_code(cell dict, int id) inline { |
||||
var (data, ok) = udict_get_ref?(dict, 16, id); |
||||
throw_unless(100, ok); |
||||
return data; |
||||
} |
||||
|
||||
(slice, ((int, int, slice, slice, cell, int, slice))) __gen_read_TokenTransfer(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 260734629); |
||||
var v'queryId = sc_0~load_uint(64); |
||||
var v'amount = sc_0~load_coins(); |
||||
var v'destination = sc_0~__tact_load_address(); |
||||
var v'responseDestination = sc_0~__tact_load_address_opt(); |
||||
var v'customPayload = null(); |
||||
if (sc_0~load_int(1)) { |
||||
v'customPayload = sc_0~load_ref(); |
||||
} |
||||
var v'forwardTonAmount = sc_0~load_coins(); |
||||
var v'forwardPayload = sc_0; |
||||
return (sc_0, (v'queryId, v'amount, v'destination, v'responseDestination, v'customPayload, v'forwardTonAmount, v'forwardPayload)); |
||||
} |
||||
|
||||
builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, slice, int, slice) v) inline { |
||||
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload) = v; |
||||
build_0 = store_uint(build_0, 395134233, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
build_0 = store_coins(build_0, v'amount); |
||||
build_0 = __tact_store_address(build_0, v'from); |
||||
build_0 = __tact_store_address_opt(build_0, v'responseAddress); |
||||
build_0 = store_coins(build_0, v'forwardTonAmount); |
||||
build_0 = store_slice(build_0, v'forwardPayload); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice) v) inline { |
||||
return __gen_write_TokenTransferInternal(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
(slice, ((int, int, slice, slice, int, slice))) __gen_read_TokenTransferInternal(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 395134233); |
||||
var v'queryId = sc_0~load_uint(64); |
||||
var v'amount = sc_0~load_coins(); |
||||
var v'from = sc_0~__tact_load_address(); |
||||
var v'responseAddress = sc_0~__tact_load_address_opt(); |
||||
var v'forwardTonAmount = sc_0~load_coins(); |
||||
var v'forwardPayload = sc_0; |
||||
return (sc_0, (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload)); |
||||
} |
||||
|
||||
builder __gen_write_TokenNotification(builder build_0, (int, int, slice, slice) v) inline { |
||||
var (v'queryId, v'amount, v'from, v'forwardPayload) = v; |
||||
build_0 = store_uint(build_0, 1935855772, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
build_0 = store_coins(build_0, v'amount); |
||||
build_0 = __tact_store_address(build_0, v'from); |
||||
build_0 = store_slice(build_0, v'forwardPayload); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenNotification((int, int, slice, slice) v) inline { |
||||
return __gen_write_TokenNotification(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
(slice, ((int, int, slice, slice))) __gen_read_TokenBurn(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 1499400124); |
||||
var v'queryId = sc_0~load_uint(64); |
||||
var v'amount = sc_0~load_coins(); |
||||
var v'owner = sc_0~__tact_load_address(); |
||||
var v'responseAddress = sc_0~__tact_load_address_opt(); |
||||
return (sc_0, (v'queryId, v'amount, v'owner, v'responseAddress)); |
||||
} |
||||
|
||||
builder __gen_write_TokenBurnNotification(builder build_0, (int, int, slice, slice) v) inline { |
||||
var (v'queryId, v'amount, v'owner, v'responseAddress) = v; |
||||
build_0 = store_uint(build_0, 2078119902, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
build_0 = store_coins(build_0, v'amount); |
||||
build_0 = __tact_store_address(build_0, v'owner); |
||||
build_0 = __tact_store_address_opt(build_0, v'responseAddress); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenBurnNotification((int, int, slice, slice) v) inline { |
||||
return __gen_write_TokenBurnNotification(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
builder __gen_write_TokenExcesses(builder build_0, (int) v) inline { |
||||
var (v'queryId) = v; |
||||
build_0 = store_uint(build_0, 3576854235, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenExcesses((int) v) inline { |
||||
return __gen_write_TokenExcesses(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
builder __gen_write_JettonDefaultWallet(builder build_0, (int, slice, slice) v) inline { |
||||
var (v'balance, v'owner, v'master) = v; |
||||
build_0 = store_int(build_0, v'balance, 257); |
||||
build_0 = __tact_store_address(build_0, v'owner); |
||||
build_0 = __tact_store_address(build_0, v'master); |
||||
return build_0; |
||||
} |
||||
|
||||
(slice, ((int, slice, slice))) __gen_read_JettonDefaultWallet(slice sc_0) inline { |
||||
var v'balance = sc_0~load_int(257); |
||||
var v'owner = sc_0~__tact_load_address(); |
||||
var v'master = sc_0~__tact_load_address(); |
||||
return (sc_0, (v'balance, v'owner, v'master)); |
||||
} |
||||
|
||||
_ __gen_StateInit_get_code((cell, cell) v) inline { |
||||
var (v'code, v'data) = v; |
||||
return v'code; |
||||
} |
||||
|
||||
(int, slice, slice) __gen_load_JettonDefaultWallet() inline { |
||||
slice sc = get_data().begin_parse(); |
||||
__tact_context_sys = sc~load_ref(); |
||||
return sc~__gen_read_JettonDefaultWallet(); |
||||
} |
||||
|
||||
() __gen_store_JettonDefaultWallet((int, slice, slice) v) impure inline { |
||||
builder b = begin_cell(); |
||||
b = b.store_ref(__tact_context_sys); |
||||
b = __gen_write_JettonDefaultWallet(b, v); |
||||
set_data(b.end_cell()); |
||||
} |
||||
|
||||
builder storeBool(builder $s, int $value) impure { |
||||
if ($value) { |
||||
return store_int($s, (- 1), 1); |
||||
} else { |
||||
return store_int($s, 0, 1); |
||||
} |
||||
} |
||||
|
||||
slice contractAddress((cell, cell) $s) impure { |
||||
var (($s'code, $s'data)) = $s; |
||||
return __tact_compute_contract_address(0, $s'code, $s'data); |
||||
} |
||||
|
||||
() send((int, slice, int, int, cell, cell, cell) $params) impure { |
||||
var (($params'bounce, $params'to, $params'value, $params'mode, $params'body, $params'code, $params'data)) = $params; |
||||
builder $b = begin_cell(); |
||||
$b = store_int($b, 1, 2); |
||||
$b = storeBool($b, $params'bounce); |
||||
$b = store_int($b, 0, 3); |
||||
$b = __tact_store_address($b, $params'to); |
||||
$b = store_coins($b, $params'value); |
||||
$b = store_int($b, 0, ((((1 + 4) + 4) + 64) + 32)); |
||||
if (((~ null?($params'code)) | (~ null?($params'data)))) { |
||||
$b = storeBool($b, true); |
||||
builder $bc = begin_cell(); |
||||
$bc = storeBool($bc, false); |
||||
$bc = storeBool($bc, false); |
||||
if ((~ null?($params'code))) { |
||||
$bc = storeBool($bc, true); |
||||
$bc = store_ref($bc, __tact_not_null($params'code)); |
||||
} else { |
||||
$bc = storeBool($bc, false); |
||||
} |
||||
if ((~ null?($params'data))) { |
||||
$bc = storeBool($bc, true); |
||||
$bc = store_ref($bc, __tact_not_null($params'data)); |
||||
} else { |
||||
$bc = storeBool($bc, false); |
||||
} |
||||
$bc = storeBool($bc, false); |
||||
$b = storeBool($b, true); |
||||
$b = store_ref($b, end_cell($bc)); |
||||
} else { |
||||
$b = storeBool($b, false); |
||||
} |
||||
cell $body = $params'body; |
||||
if ((~ null?($body))) { |
||||
$b = storeBool($b, true); |
||||
$b = store_ref($b, __tact_not_null($body)); |
||||
} else { |
||||
$b = storeBool($b, false); |
||||
} |
||||
cell $c = end_cell($b); |
||||
send_raw_message($c, $params'mode); |
||||
} |
||||
|
||||
int __gen_Context_readForwardFee((int, slice, int, slice) $self) impure { |
||||
var (($self'bounced, $self'sender, $self'value, $self'raw)) = $self; |
||||
var (($self'bounced, $self'sender, $self'value, $self'raw)) = $self; |
||||
slice $sc = $self'raw; |
||||
$sc~load_coins(); |
||||
$sc~skip_bits(1); |
||||
$sc~load_coins(); |
||||
return (($sc~load_coins() * 3) / 2); |
||||
} |
||||
|
||||
cell __gen_JettonDefaultWallet_init(cell sys', slice $master, slice $owner) { |
||||
var (($self'balance, $self'owner, $self'master)) = (null(), null(), null()); |
||||
$self'balance = 0; |
||||
$self'owner = $owner; |
||||
$self'master = $master; |
||||
var b' = begin_cell(); |
||||
b' = b'.store_ref(sys'); |
||||
b' = __gen_write_JettonDefaultWallet(b', ($self'balance, $self'owner, $self'master)); |
||||
return b'.end_cell(); |
||||
} |
||||
|
||||
(cell, cell) __gen_JettonDefaultWallet_init_child(cell sys', slice $master, slice $owner) { |
||||
slice sc' = sys'.begin_parse(); |
||||
cell source = sc'~load_dict(); |
||||
cell mine = __tact_dict_get_code(source, 55471); |
||||
cell contracts = new_dict(); |
||||
cell code_55471 = __tact_dict_get_code(source, 55471); |
||||
contracts = __tact_dict_set_code(contracts, 55471, code_55471); |
||||
cell sys = begin_cell().store_dict(contracts).end_cell(); |
||||
return (mine, __gen_JettonDefaultWallet_init(sys, $master, $owner)); |
||||
} |
||||
|
||||
(int, slice, slice, cell) __gen_JettonDefaultWallet_get_wallet_data((int, slice, slice) $self) impure { |
||||
var (($self'balance, $self'owner, $self'master)) = $self; |
||||
return ($self'balance, $self'owner, $self'master, __gen_StateInit_get_code(__gen_JettonDefaultWallet_init_child(__tact_context_sys, $self'master, $self'owner))); |
||||
} |
||||
|
||||
_ __gen_get_get_wallet_data() method_id(97026) { |
||||
var self = __gen_load_JettonDefaultWallet(); |
||||
var res = __gen_JettonDefaultWallet_get_wallet_data(self); |
||||
return res; |
||||
} |
||||
|
||||
(((int, slice, slice)), ()) __gen_JettonDefaultWallet_receive_TokenTransfer((int, slice, slice) $self, (int, int, slice, slice, cell, int, slice) $msg) impure { |
||||
var ($self'balance, $self'owner, $self'master) = $self; |
||||
var ($msg'queryId, $msg'amount, $msg'destination, $msg'responseDestination, $msg'customPayload, $msg'forwardTonAmount, $msg'forwardPayload) = $msg; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
throw_unless(4429, __tact_address_eq($ctx'sender, $self'owner)); |
||||
$self'balance = ($self'balance - $msg'amount); |
||||
throw_unless(62972, ($self'balance >= 0)); |
||||
int $fwdFee = __gen_Context_readForwardFee(($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw)); |
||||
int $fwdCount = 1; |
||||
if (($msg'forwardTonAmount > 0)) { |
||||
$fwdCount = 2; |
||||
} |
||||
throw_unless(16059, ($ctx'value > ((($fwdCount * $fwdFee) + (2 * 10000000)) + 10000000))); |
||||
var ($init'code, $init'data) = __gen_JettonDefaultWallet_init_child(__tact_context_sys, $self'master, $msg'destination); |
||||
slice $walletAddress = contractAddress(($init'code, $init'data)); |
||||
send((true, $walletAddress, 0, 64, __gen_writecell_TokenTransferInternal(($msg'queryId, $msg'amount, $self'owner, $self'owner, $msg'forwardTonAmount, $msg'forwardPayload)), $init'code, $init'data)); |
||||
return (($self'balance, $self'owner, $self'master), ()); |
||||
} |
||||
|
||||
(((int, slice, slice)), ()) __gen_JettonDefaultWallet_receive_TokenTransferInternal((int, slice, slice) $self, (int, int, slice, slice, int, slice) $msg) impure { |
||||
var ($self'balance, $self'owner, $self'master) = $self; |
||||
var ($msg'queryId, $msg'amount, $msg'from, $msg'responseAddress, $msg'forwardTonAmount, $msg'forwardPayload) = $msg; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
if (__tact_address_neq($ctx'sender, $self'master)) { |
||||
var ($sinit'code, $sinit'data) = __gen_JettonDefaultWallet_init_child(__tact_context_sys, $self'master, $msg'from); |
||||
throw_unless(4429, __tact_address_eq(contractAddress(($sinit'code, $sinit'data)), $ctx'sender)); |
||||
} |
||||
$self'balance = ($self'balance + $msg'amount); |
||||
throw_unless(62972, ($self'balance >= 0)); |
||||
int $msgValue = $ctx'value; |
||||
int $tonBalanceBeforeMsg = (__tact_my_balance() - $msgValue); |
||||
int $storageFee = (10000000 - min($tonBalanceBeforeMsg, 10000000)); |
||||
$msgValue = ($msgValue - ($storageFee + 10000000)); |
||||
if (($msg'forwardTonAmount > 0)) { |
||||
int $fwdFee = __gen_Context_readForwardFee(($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw)); |
||||
$msgValue = ($msgValue - ($msg'forwardTonAmount + $fwdFee)); |
||||
send((false, $self'owner, $msg'forwardTonAmount, 0, __gen_writecell_TokenNotification(($msg'queryId, $msg'amount, $msg'from, $msg'forwardPayload)), null(), null())); |
||||
} |
||||
if (((~ null?($msg'responseAddress)) & ($msgValue > 0))) { |
||||
send((false, __tact_not_null($msg'responseAddress), $msgValue, 0, __gen_writecell_TokenExcesses(($msg'queryId)), null(), null())); |
||||
} |
||||
return (($self'balance, $self'owner, $self'master), ()); |
||||
} |
||||
|
||||
(((int, slice, slice)), ()) __gen_JettonDefaultWallet_receive_TokenBurn((int, slice, slice) $self, (int, int, slice, slice) $msg) impure { |
||||
var ($self'balance, $self'owner, $self'master) = $self; |
||||
var ($msg'queryId, $msg'amount, $msg'owner, $msg'responseAddress) = $msg; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
throw_unless(4429, __tact_address_eq($ctx'sender, $self'owner)); |
||||
$self'balance = ($self'balance - $msg'amount); |
||||
throw_unless(62972, ($self'balance >= 0)); |
||||
int $fwdFee = __gen_Context_readForwardFee(($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw)); |
||||
throw_unless(16059, ($ctx'value > (($fwdFee + (2 * 10000000)) + 10000000))); |
||||
send((true, $self'master, 0, 64, __gen_writecell_TokenBurnNotification(($msg'queryId, $msg'amount, $self'owner, $self'owner)), null(), null())); |
||||
return (($self'balance, $self'owner, $self'master), ()); |
||||
} |
||||
|
||||
((int, slice, slice), ()) __gen_JettonDefaultWallet_receive_bounced((int, slice, slice) $self, slice $msg) impure { |
||||
var ($self'balance, $self'owner, $self'master) = $self; |
||||
$msg~skip_bits(32); |
||||
int $op = $msg~load_uint(32); |
||||
int $queryId = $msg~load_uint(64); |
||||
int $jettonAmount = $msg~load_coins(); |
||||
throw_unless(13650, (($op == 395134233) | ($op == 2078119902))); |
||||
$self'balance = ($self'balance + $jettonAmount); |
||||
return (($self'balance, $self'owner, $self'master), ()); |
||||
} |
||||
|
||||
|
||||
() recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { |
||||
|
||||
;; Parse incoming message |
||||
int op = 0; |
||||
if (slice_bits(in_msg) >= 32) { |
||||
op = in_msg.preload_uint(32); |
||||
} |
||||
var cs = in_msg_cell.begin_parse(); |
||||
var msg_flags = cs~load_uint(4); |
||||
var msg_bounced = ((msg_flags & 1) == 1 ? true : false); |
||||
slice msg_sender_addr = cs~load_msg_addr(); |
||||
__tact_context = (msg_bounced, msg_sender_addr, msg_value, cs); |
||||
|
||||
;; Handle bounced messages |
||||
if (msg_bounced) { |
||||
var self = __gen_load_JettonDefaultWallet(); |
||||
self~__gen_JettonDefaultWallet_receive_bounced(in_msg); |
||||
__gen_store_JettonDefaultWallet(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Receive TokenTransfer message |
||||
if (op == 260734629) { |
||||
var self = __gen_load_JettonDefaultWallet(); |
||||
var msg = in_msg~__gen_read_TokenTransfer(); |
||||
self~__gen_JettonDefaultWallet_receive_TokenTransfer(msg); |
||||
__gen_store_JettonDefaultWallet(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Receive TokenTransferInternal message |
||||
if (op == 395134233) { |
||||
var self = __gen_load_JettonDefaultWallet(); |
||||
var msg = in_msg~__gen_read_TokenTransferInternal(); |
||||
self~__gen_JettonDefaultWallet_receive_TokenTransferInternal(msg); |
||||
__gen_store_JettonDefaultWallet(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Receive TokenBurn message |
||||
if (op == 1499400124) { |
||||
var self = __gen_load_JettonDefaultWallet(); |
||||
var msg = in_msg~__gen_read_TokenBurn(); |
||||
self~__gen_JettonDefaultWallet_receive_TokenBurn(msg); |
||||
__gen_store_JettonDefaultWallet(self); |
||||
return (); |
||||
} |
||||
|
||||
throw(130); |
||||
} |
||||
|
||||
cell init_JettonDefaultWallet(cell sys', slice master, slice owner) method_id { |
||||
return __gen_JettonDefaultWallet_init(sys', master, owner); |
||||
} |
||||
|
||||
_ supported_interfaces() method_id { |
||||
return ( |
||||
"org.ton.introspection.v0"H >> 128, |
||||
"org.ton.abi.ipfs.v0"H >> 128, |
||||
"org.ton.jetton.wallet"H >> 128 |
||||
); |
||||
} |
||||
|
||||
_ get_abi_ipfs() { |
||||
return "ipfs://QmdPUYM67SQxPhiSig4LVW3rjqcKgEce6SGvRp3oZRXEM1"; |
||||
} |
@ -0,0 +1,775 @@
|
||||
PROGRAM{ |
||||
DECLPROC __tact_my_balance |
||||
DECLPROC __tact_not_null |
||||
DECLPROC __tact_context_get |
||||
DECLPROC __tact_verify_address |
||||
DECLPROC __tact_load_address |
||||
DECLPROC __tact_load_address_opt |
||||
DECLPROC __tact_store_address |
||||
DECLPROC __tact_store_address_opt |
||||
DECLPROC __tact_compute_contract_address |
||||
DECLPROC __tact_address_eq |
||||
DECLPROC __tact_address_neq |
||||
DECLPROC __tact_dict_set_code |
||||
DECLPROC __tact_dict_get_code |
||||
DECLPROC __gen_read_TokenTransfer |
||||
DECLPROC __gen_write_TokenTransferInternal |
||||
DECLPROC __gen_writecell_TokenTransferInternal |
||||
DECLPROC __gen_read_TokenTransferInternal |
||||
DECLPROC __gen_write_TokenNotification |
||||
DECLPROC __gen_writecell_TokenNotification |
||||
DECLPROC __gen_read_TokenBurn |
||||
DECLPROC __gen_write_TokenBurnNotification |
||||
DECLPROC __gen_writecell_TokenBurnNotification |
||||
DECLPROC __gen_write_TokenExcesses |
||||
DECLPROC __gen_writecell_TokenExcesses |
||||
DECLPROC __gen_write_JettonDefaultWallet |
||||
DECLPROC __gen_read_JettonDefaultWallet |
||||
DECLPROC __gen_StateInit_get_code |
||||
DECLPROC __gen_load_JettonDefaultWallet |
||||
DECLPROC __gen_store_JettonDefaultWallet |
||||
DECLPROC storeBool |
||||
DECLPROC contractAddress |
||||
DECLPROC send |
||||
DECLPROC __gen_Context_readForwardFee |
||||
DECLPROC __gen_JettonDefaultWallet_init |
||||
DECLPROC __gen_JettonDefaultWallet_init_child |
||||
DECLPROC __gen_JettonDefaultWallet_get_wallet_data |
||||
97026 DECLMETHOD __gen_get_get_wallet_data |
||||
DECLPROC __gen_JettonDefaultWallet_receive_TokenTransfer |
||||
DECLPROC __gen_JettonDefaultWallet_receive_TokenTransferInternal |
||||
DECLPROC __gen_JettonDefaultWallet_receive_TokenBurn |
||||
DECLPROC __gen_JettonDefaultWallet_receive_bounced |
||||
DECLPROC recv_internal |
||||
111075 DECLMETHOD init_JettonDefaultWallet |
||||
113617 DECLMETHOD supported_interfaces |
||||
DECLPROC get_abi_ipfs |
||||
DECLGLOBVAR __tact_context |
||||
DECLGLOBVAR __tact_context_sys |
||||
__tact_my_balance PROCINLINE:<{ |
||||
BALANCE |
||||
FIRST |
||||
}> |
||||
__tact_not_null PROC:<{ |
||||
DUP |
||||
ISNULL |
||||
128 THROWIF |
||||
}> |
||||
__tact_context_get PROCINLINE:<{ |
||||
__tact_context GETGLOB |
||||
4 UNTUPLE |
||||
}> |
||||
__tact_verify_address PROCINLINE:<{ |
||||
SBITS |
||||
267 PUSHINT |
||||
NEQ |
||||
134 THROWIFNOT |
||||
}> |
||||
__tact_load_address PROCINLINE:<{ |
||||
LDMSGADDR |
||||
SWAP |
||||
}> |
||||
__tact_load_address_opt PROCINLINE:<{ |
||||
LDMSGADDR |
||||
OVER |
||||
2 PLDU |
||||
0 NEQINT |
||||
IF:<{ |
||||
SWAP |
||||
}>ELSE<{ |
||||
NIP |
||||
PUSHNULL |
||||
}> |
||||
}> |
||||
__tact_store_address PROCINLINE:<{ |
||||
STSLICER |
||||
}> |
||||
__tact_store_address_opt PROCINLINE:<{ |
||||
DUP |
||||
ISNULL |
||||
IF:<{ |
||||
DROP |
||||
0 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
}>ELSE<{ |
||||
__tact_store_address INLINECALLDICT |
||||
}> |
||||
}> |
||||
__tact_compute_contract_address PROC:<{ |
||||
NEWC |
||||
0 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
3 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STU |
||||
s1 s2 XCHG |
||||
STREF |
||||
STREF |
||||
ENDC |
||||
HASHCU |
||||
NEWC |
||||
2 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STU |
||||
s1 s2 XCHG |
||||
8 STI |
||||
256 STU |
||||
ENDC |
||||
CTOS |
||||
}> |
||||
__tact_address_eq PROCINLINE:<{ |
||||
SDEQ |
||||
}> |
||||
__tact_address_neq PROCINLINE:<{ |
||||
SDEQ |
||||
NOT |
||||
}> |
||||
__tact_dict_set_code PROCINLINE:<{ |
||||
s0 s2 XCHG |
||||
16 PUSHINT |
||||
DICTUSETREF |
||||
}> |
||||
__tact_dict_get_code PROCINLINE:<{ |
||||
SWAP |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
}> |
||||
__gen_read_TokenTransfer PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
260734629 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
__tact_load_address INLINECALLDICT |
||||
SWAP |
||||
__tact_load_address_opt INLINECALLDICT |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
SWAP |
||||
IF:<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> |
||||
LDGRAMS |
||||
s6 s6 XCPU |
||||
s1 s6 XCHG |
||||
s1 s5 XCHG |
||||
s4 s4 s0 XCHG3 |
||||
}> |
||||
__gen_write_TokenTransferInternal PROCINLINE:<{ |
||||
395134233 PUSHINT |
||||
s0 s7 XCHG2 |
||||
32 STU |
||||
s1 s5 XCHG |
||||
64 STU |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
__tact_store_address_opt INLINECALLDICT |
||||
SWAP |
||||
STGRAMS |
||||
SWAP |
||||
STSLICER |
||||
}> |
||||
__gen_writecell_TokenTransferInternal PROCINLINE:<{ |
||||
NEWC |
||||
6 -ROLL |
||||
__gen_write_TokenTransferInternal INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_read_TokenTransferInternal PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
__tact_load_address INLINECALLDICT |
||||
SWAP |
||||
__tact_load_address_opt INLINECALLDICT |
||||
SWAP |
||||
LDGRAMS |
||||
s5 s5 XCPU |
||||
s1 s5 XCHG |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
}> |
||||
__gen_write_TokenNotification PROCINLINE:<{ |
||||
1935855772 PUSHINT |
||||
s0 s5 XCHG2 |
||||
32 STU |
||||
s1 s3 XCHG |
||||
64 STU |
||||
SWAP |
||||
STGRAMS |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
STSLICER |
||||
}> |
||||
__gen_writecell_TokenNotification PROCINLINE:<{ |
||||
NEWC |
||||
4 -ROLL |
||||
__gen_write_TokenNotification INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_read_TokenBurn PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
1499400124 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
__tact_load_address INLINECALLDICT |
||||
SWAP |
||||
__tact_load_address_opt INLINECALLDICT |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
}> |
||||
__gen_write_TokenBurnNotification PROCINLINE:<{ |
||||
2078119902 PUSHINT |
||||
s0 s5 XCHG2 |
||||
32 STU |
||||
s1 s3 XCHG |
||||
64 STU |
||||
SWAP |
||||
STGRAMS |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
__tact_store_address_opt INLINECALLDICT |
||||
}> |
||||
__gen_writecell_TokenBurnNotification PROCINLINE:<{ |
||||
NEWC |
||||
4 -ROLL |
||||
__gen_write_TokenBurnNotification INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_write_TokenExcesses PROCINLINE:<{ |
||||
3576854235 PUSHINT |
||||
ROT |
||||
32 STU |
||||
64 STU |
||||
}> |
||||
__gen_writecell_TokenExcesses PROCINLINE:<{ |
||||
NEWC |
||||
SWAP |
||||
__gen_write_TokenExcesses INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_write_JettonDefaultWallet PROCINLINE:<{ |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
}> |
||||
__gen_read_JettonDefaultWallet PROCINLINE:<{ |
||||
257 PUSHINT |
||||
LDIX |
||||
__tact_load_address INLINECALLDICT |
||||
SWAP |
||||
__tact_load_address INLINECALLDICT |
||||
s3 s3 s0 XCHG3 |
||||
}> |
||||
__gen_StateInit_get_code PROCINLINE:<{ |
||||
DROP |
||||
}> |
||||
__gen_load_JettonDefaultWallet PROCINLINE:<{ |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
SWAP |
||||
__tact_context_sys SETGLOB |
||||
__gen_read_JettonDefaultWallet INLINECALLDICT |
||||
1 3 BLKDROP2 |
||||
}> |
||||
__gen_store_JettonDefaultWallet PROCINLINE:<{ |
||||
NEWC |
||||
__tact_context_sys GETGLOB |
||||
SWAP |
||||
STREF |
||||
3 -ROLL |
||||
__gen_write_JettonDefaultWallet INLINECALLDICT |
||||
ENDC |
||||
c4 POP |
||||
}> |
||||
storeBool PROC:<{ |
||||
IFJMP:<{ |
||||
-1 PUSHINT |
||||
SWAP |
||||
1 STI |
||||
}> |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STI |
||||
}> |
||||
contractAddress PROC:<{ |
||||
0 PUSHINT |
||||
-ROT |
||||
__tact_compute_contract_address CALLDICT |
||||
}> |
||||
send PROC:<{ |
||||
NEWC |
||||
1 PUSHINT |
||||
SWAP |
||||
2 STI |
||||
s0 s7 XCHG2 |
||||
storeBool CALLDICT |
||||
0 PUSHINT |
||||
SWAP |
||||
3 STI |
||||
s0 s5 XCHG2 |
||||
__tact_store_address INLINECALLDICT |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
0 PUSHINT |
||||
SWAP |
||||
105 STI |
||||
s3 PUSH |
||||
ISNULL |
||||
NOT |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
OR |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
NEWC |
||||
FALSE |
||||
storeBool CALLDICT |
||||
FALSE |
||||
storeBool CALLDICT |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s4 XCHG |
||||
__tact_not_null CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}>ELSE<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s4 XCHG |
||||
__tact_not_null CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}>ELSE<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
FALSE |
||||
storeBool CALLDICT |
||||
s0 s2 XCHG |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s2 XCHG |
||||
ENDC |
||||
ROT |
||||
STREF |
||||
}>ELSE<{ |
||||
s3 POP |
||||
s3 POP |
||||
SWAP |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
OVER |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
SWAP |
||||
__tact_not_null CALLDICT |
||||
SWAP |
||||
STREF |
||||
}>ELSE<{ |
||||
NIP |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
ENDC |
||||
SWAP |
||||
SENDRAWMSG |
||||
}> |
||||
__gen_Context_readForwardFee PROC:<{ |
||||
3 1 BLKDROP2 |
||||
LDGRAMS |
||||
NIP |
||||
1 PUSHINT |
||||
SDSKIPFIRST |
||||
LDGRAMS |
||||
NIP |
||||
LDGRAMS |
||||
DROP |
||||
3 MULCONST |
||||
1 RSHIFT# |
||||
}> |
||||
__gen_JettonDefaultWallet_init PROC:<{ |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s1 s3 XCHG3 |
||||
__gen_write_JettonDefaultWallet INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_JettonDefaultWallet_init_child PROC:<{ |
||||
s0 s2 XCHG |
||||
CTOS |
||||
LDDICT |
||||
DROP |
||||
DUP |
||||
55471 PUSHINT |
||||
__tact_dict_get_code INLINECALLDICT |
||||
NEWDICT |
||||
s0 s2 XCHG |
||||
55471 PUSHINT |
||||
__tact_dict_get_code INLINECALLDICT |
||||
s1 s2 XCHG |
||||
55471 PUSHINT |
||||
SWAP |
||||
__tact_dict_set_code INLINECALLDICT |
||||
NEWC |
||||
STDICT |
||||
ENDC |
||||
s0 s0 s3 XCHG3 |
||||
__gen_JettonDefaultWallet_init CALLDICT |
||||
}> |
||||
__gen_JettonDefaultWallet_get_wallet_data PROC:<{ |
||||
__tact_context_sys GETGLOB |
||||
s1 s2 PUSH2 |
||||
__gen_JettonDefaultWallet_init_child CALLDICT |
||||
__gen_StateInit_get_code INLINECALLDICT |
||||
}> |
||||
__gen_get_get_wallet_data PROC:<{ |
||||
__gen_load_JettonDefaultWallet INLINECALLDICT |
||||
__gen_JettonDefaultWallet_get_wallet_data CALLDICT |
||||
}> |
||||
__gen_JettonDefaultWallet_receive_TokenTransfer PROC:<{ |
||||
2 2 BLKDROP2 |
||||
__tact_context_get INLINECALLDICT |
||||
4429 PUSHINT |
||||
s3 s11 PUSH2 |
||||
__tact_address_eq INLINECALLDICT |
||||
THROWANYIFNOT |
||||
s11 s7 XCPU |
||||
SUB |
||||
62972 PUSHINT |
||||
OVER |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
s3 s3 s0 XCHG3 |
||||
s3 s11 PUXC |
||||
__gen_Context_readForwardFee CALLDICT |
||||
1 PUSHINT |
||||
s4 PUSH |
||||
0 GTINT |
||||
IF:<{ |
||||
DROP |
||||
2 PUSHINT |
||||
}> |
||||
16059 PUSHINT |
||||
s0 s2 XCHG |
||||
MUL |
||||
20000000 PUSHINT |
||||
ADD |
||||
10000000 PUSHINT |
||||
ADD |
||||
s1 s2 XCHG |
||||
GREATER |
||||
THROWANYIFNOT |
||||
__tact_context_sys GETGLOB |
||||
s0 s6 s3 XCPUXC |
||||
__gen_JettonDefaultWallet_init_child CALLDICT |
||||
2DUP |
||||
contractAddress CALLDICT |
||||
TRUE |
||||
s7 s6 XCHG2 |
||||
0 PUSHINT |
||||
64 PUSHINT |
||||
s11 PUSH |
||||
s12 s2 s8 PUXC2 |
||||
s1 s8 XCHG |
||||
__gen_writecell_TokenTransferInternal INLINECALLDICT |
||||
s5 s6 XCHG |
||||
s3 s4 XCHG |
||||
-ROT |
||||
send CALLDICT |
||||
}> |
||||
__gen_JettonDefaultWallet_receive_TokenTransferInternal PROC:<{ |
||||
__tact_context_get INLINECALLDICT |
||||
s2 s10 PUSH2 |
||||
__tact_address_neq INLINECALLDICT |
||||
IF:<{ |
||||
__tact_context_sys GETGLOB |
||||
s11 s8 PUSH2 |
||||
__gen_JettonDefaultWallet_init_child CALLDICT |
||||
SWAP |
||||
4429 PUSHINT |
||||
s0 s2 XCHG |
||||
contractAddress CALLDICT |
||||
s4 PUSH |
||||
__tact_address_eq INLINECALLDICT |
||||
THROWANYIFNOT |
||||
}> |
||||
s12 s8 XCPU |
||||
ADD |
||||
62972 PUSHINT |
||||
OVER |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
OVER |
||||
__tact_my_balance INLINECALLDICT |
||||
OVER |
||||
SUB |
||||
10000000 PUSHINT |
||||
TUCK |
||||
MIN |
||||
SUB |
||||
10000000 PUSHINT |
||||
ADD |
||||
SUB |
||||
s6 PUSH |
||||
0 GTINT |
||||
IF:<{ |
||||
s4 s13 XCHG2 |
||||
s3 s3 s0 XCHG3 |
||||
__gen_Context_readForwardFee CALLDICT |
||||
s3 s(-1) PUXC |
||||
ADD |
||||
s1 s10 XCHG |
||||
SUB |
||||
FALSE |
||||
0 PUSHINT |
||||
s8 PUSH |
||||
s8 s1 s3 XCHG3 |
||||
s7 s4 XCHG2 |
||||
__gen_writecell_TokenNotification INLINECALLDICT |
||||
s8 PUSH |
||||
s4 s6 XCHG |
||||
s3 s1 s3 XCHG3 |
||||
s5 s5 XCHG2 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
send CALLDICT |
||||
s0 s5 XCHG2 |
||||
}>ELSE<{ |
||||
s7 s13 XCHG |
||||
s8 s9 XCHG2 |
||||
8 BLKDROP |
||||
}> |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
s2 PUSH |
||||
0 GTINT |
||||
AND |
||||
IF:<{ |
||||
FALSE |
||||
s0 s6 XCHG |
||||
__tact_not_null CALLDICT |
||||
0 PUSHINT |
||||
s0 s4 XCHG |
||||
__gen_writecell_TokenExcesses INLINECALLDICT |
||||
s4 s7 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
s1 s7 XCHG |
||||
PUSHNULL |
||||
PUSHNULL |
||||
send CALLDICT |
||||
}>ELSE<{ |
||||
s5 POP |
||||
2DROP |
||||
}> |
||||
}> |
||||
__gen_JettonDefaultWallet_receive_TokenBurn PROC:<{ |
||||
2DROP |
||||
__tact_context_get INLINECALLDICT |
||||
4429 PUSHINT |
||||
s3 s8 PUSH2 |
||||
__tact_address_eq INLINECALLDICT |
||||
THROWANYIFNOT |
||||
s8 s4 XCPU |
||||
SUB |
||||
62972 PUSHINT |
||||
OVER |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
s3 s3 s0 XCHG3 |
||||
s3 s8 PUXC |
||||
__gen_Context_readForwardFee CALLDICT |
||||
16059 PUSHINT |
||||
SWAP |
||||
20000000 PUSHINT |
||||
ADD |
||||
10000000 PUSHINT |
||||
ADD |
||||
s1 s2 XCHG |
||||
GREATER |
||||
THROWANYIFNOT |
||||
TRUE |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
64 PUSHINT |
||||
s3 s6 s6 XCPU2 |
||||
__gen_writecell_TokenBurnNotification INLINECALLDICT |
||||
s3 s0 s4 XC2PU |
||||
s3 s3 XCHG2 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
send CALLDICT |
||||
}> |
||||
__gen_JettonDefaultWallet_receive_bounced PROC:<{ |
||||
32 PUSHINT |
||||
SDSKIPFIRST |
||||
32 LDU |
||||
64 LDU |
||||
NIP |
||||
LDGRAMS |
||||
DROP |
||||
13650 PUSHINT |
||||
s2 PUSH |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
s0 s3 XCHG |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
s1 s3 XCHG |
||||
OR |
||||
s1 s2 XCHG |
||||
THROWANYIFNOT |
||||
s1 s3 XCHG |
||||
ADD |
||||
s0 s2 XCHG |
||||
}> |
||||
recv_internal PROC:<{ |
||||
0 PUSHINT |
||||
OVER |
||||
SBITS |
||||
31 GTINT |
||||
IF:<{ |
||||
DROP |
||||
DUP |
||||
32 PLDU |
||||
}> |
||||
s0 s2 XCHG |
||||
CTOS |
||||
4 LDU |
||||
SWAP |
||||
1 PUSHINT |
||||
AND |
||||
1 EQINT |
||||
IF:<{ |
||||
TRUE |
||||
}>ELSE<{ |
||||
FALSE |
||||
}> |
||||
SWAP |
||||
LDMSGADDR |
||||
s2 PUSH |
||||
s6 s6 XCHG2 |
||||
4 TUPLE |
||||
__tact_context SETGLOB |
||||
s0 s2 XCHG |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_JettonDefaultWallet INLINECALLDICT |
||||
3 ROLL |
||||
__gen_JettonDefaultWallet_receive_bounced CALLDICT |
||||
__gen_store_JettonDefaultWallet INLINECALLDICT |
||||
}> |
||||
DUP |
||||
260734629 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_JettonDefaultWallet INLINECALLDICT |
||||
s0 s3 XCHG |
||||
__gen_read_TokenTransfer INLINECALLDICT |
||||
s7 POP |
||||
s8 s9 XCHG |
||||
s7 s8 XCHG |
||||
6 ROLL |
||||
__gen_JettonDefaultWallet_receive_TokenTransfer CALLDICT |
||||
__gen_store_JettonDefaultWallet INLINECALLDICT |
||||
}> |
||||
DUP |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_JettonDefaultWallet INLINECALLDICT |
||||
s0 s3 XCHG |
||||
__gen_read_TokenTransferInternal INLINECALLDICT |
||||
s6 POP |
||||
s7 s8 XCHG |
||||
s6 s7 XCHG |
||||
5 ROLL |
||||
__gen_JettonDefaultWallet_receive_TokenTransferInternal CALLDICT |
||||
__gen_store_JettonDefaultWallet INLINECALLDICT |
||||
}> |
||||
1499400124 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
__gen_load_JettonDefaultWallet INLINECALLDICT |
||||
s0 s3 XCHG |
||||
__gen_read_TokenBurn INLINECALLDICT |
||||
s4 POP |
||||
s5 s6 XCHG |
||||
s4 s5 XCHG |
||||
3 ROLL |
||||
__gen_JettonDefaultWallet_receive_TokenBurn CALLDICT |
||||
__gen_store_JettonDefaultWallet INLINECALLDICT |
||||
}> |
||||
DROP |
||||
130 THROW |
||||
}> |
||||
init_JettonDefaultWallet PROC:<{ |
||||
__gen_JettonDefaultWallet_init CALLDICT |
||||
}> |
||||
supported_interfaces PROC:<{ |
||||
123515602279859691144772641439386770278 PUSHINT |
||||
209801025412363888721030803524359905849 PUSHINT |
||||
209778528950190195973528115415557644819 PUSHINT |
||||
}> |
||||
get_abi_ipfs PROC:<{ |
||||
x{697066733a2f2f516d645055594d3637535178506869536967344c565733726a71634b67456365365347765270336f5a5258454d31} PUSHSLICE |
||||
}> |
||||
}END>c |
@ -0,0 +1,806 @@
|
||||
SETCP0 |
||||
(:methods |
||||
recv_internal: |
||||
0 PUSHINT |
||||
s1 PUSH |
||||
SBITS |
||||
31 GTINT |
||||
<{ |
||||
s0 POP |
||||
s0 PUSH |
||||
32 PLDU |
||||
}> PUSHCONT |
||||
IF |
||||
s0 s2 XCHG |
||||
CTOS |
||||
4 LDU |
||||
s0 s1 XCHG |
||||
1 PUSHINT |
||||
AND |
||||
1 EQINT |
||||
<{ |
||||
-1 PUSHINT |
||||
}> PUSHCONT |
||||
<{ |
||||
0 PUSHINT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s2 PUSH |
||||
s6 s6 XCHG2 |
||||
4 TUPLE |
||||
1 SETGLOBVAR |
||||
s0 s2 XCHG |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
257 PUSHINT |
||||
LDI |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
1 3 BLKDROP2 |
||||
1 3 BLKSWAP |
||||
40 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
3 1 BLKSWAP |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
c4 POP |
||||
}> PUSHCONT |
||||
IFJMP |
||||
s0 PUSH |
||||
260734629 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
257 PUSHINT |
||||
LDI |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
1 3 BLKDROP2 |
||||
s0 s3 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
260734629 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s1 PUSH |
||||
2 PLDU |
||||
0 NEQINT |
||||
<{ |
||||
s0 s1 XCHG |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
PUSHNULL |
||||
}> PUSHCONT |
||||
IFELSE |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
LDGRAMS |
||||
s6 s6 XCPU |
||||
s1 s6 XCHG |
||||
s1 s5 XCHG |
||||
s4 s4 s0 XCHG3 |
||||
s7 POP |
||||
s8 s9 XCHG |
||||
s7 s8 XCHG |
||||
1 6 BLKSWAP |
||||
37 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
3 1 BLKSWAP |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
s0 PUSH |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
257 PUSHINT |
||||
LDI |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
1 3 BLKDROP2 |
||||
s0 s3 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s1 PUSH |
||||
2 PLDU |
||||
0 NEQINT |
||||
<{ |
||||
s0 s1 XCHG |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
PUSHNULL |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s0 s1 XCHG |
||||
LDGRAMS |
||||
s5 s5 XCPU |
||||
s1 s5 XCHG |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
s6 POP |
||||
s7 s8 XCHG |
||||
s6 s7 XCHG |
||||
1 5 BLKSWAP |
||||
38 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
3 1 BLKSWAP |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
1499400124 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
257 PUSHINT |
||||
LDI |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
1 3 BLKDROP2 |
||||
s0 s3 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
1499400124 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s1 PUSH |
||||
2 PLDU |
||||
0 NEQINT |
||||
<{ |
||||
s0 s1 XCHG |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
PUSHNULL |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
s4 POP |
||||
s5 s6 XCHG |
||||
s4 s5 XCHG |
||||
1 3 BLKSWAP |
||||
39 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
3 1 BLKSWAP |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
s0 POP |
||||
130 THROW |
||||
|
||||
2: |
||||
s0 PUSH |
||||
ISNULL |
||||
128 THROWIF |
||||
|
||||
9: |
||||
NEWC |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
3 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STU |
||||
s1 s2 XCHG |
||||
STREF |
||||
STREF |
||||
ENDC |
||||
HASHCU |
||||
NEWC |
||||
2 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STU |
||||
s1 s2 XCHG |
||||
8 STI |
||||
256 STU |
||||
ENDC |
||||
CTOS |
||||
|
||||
30: |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
}> PUSHCONT |
||||
IFJMP |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
|
||||
31: |
||||
0 PUSHINT |
||||
ROTREV |
||||
9 CALLDICT |
||||
|
||||
32: |
||||
NEWC |
||||
1 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STI |
||||
s0 s7 XCHG2 |
||||
30 CALLDICT |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
3 STI |
||||
s0 s5 XCHG2 |
||||
STSLICER |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
105 STI |
||||
s3 PUSH |
||||
ISNULL |
||||
NOT |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
OR |
||||
<{ |
||||
-1 PUSHINT |
||||
30 CALLDICT |
||||
NEWC |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
30 CALLDICT |
||||
s0 s4 XCHG |
||||
2 CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
30 CALLDICT |
||||
s0 s4 XCHG |
||||
2 CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
s0 s2 XCHG |
||||
-1 PUSHINT |
||||
30 CALLDICT |
||||
s0 s2 XCHG |
||||
ENDC |
||||
ROT |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s3 POP |
||||
s3 POP |
||||
s0 s1 XCHG |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s1 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
30 CALLDICT |
||||
s0 s1 XCHG |
||||
2 CALLDICT |
||||
s0 s1 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
0 PUSHINT |
||||
30 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
ENDC |
||||
s0 s1 XCHG |
||||
SENDRAWMSG |
||||
|
||||
33: |
||||
3 1 BLKDROP2 |
||||
LDGRAMS |
||||
s1 POP |
||||
1 PUSHINT |
||||
SDSKIPFIRST |
||||
LDGRAMS |
||||
s1 POP |
||||
LDGRAMS |
||||
s0 POP |
||||
3 MULCONST |
||||
1 RSHIFT |
||||
|
||||
34: |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s1 s3 XCHG3 |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
|
||||
35: |
||||
s0 s2 XCHG |
||||
CTOS |
||||
LDDICT |
||||
s0 POP |
||||
s0 PUSH |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
s1 s2 XCHG |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
s0 s2 XCHG |
||||
16 PUSHINT |
||||
DICTUSETREF |
||||
NEWC |
||||
STDICT |
||||
ENDC |
||||
s0 s0 s3 XCHG3 |
||||
34 CALLDICT |
||||
|
||||
36: |
||||
2 GETGLOBVAR |
||||
s1 s2 PUSH2 |
||||
35 CALLDICT |
||||
s0 POP |
||||
|
||||
37: |
||||
2 2 BLKDROP2 |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
4429 PUSHINT |
||||
s3 s11 PUSH2 |
||||
SDEQ |
||||
THROWANYIFNOT |
||||
s11 s7 XCPU |
||||
SUB |
||||
62972 PUSHINT |
||||
s1 PUSH |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
s3 s3 s0 XCHG3 |
||||
s3 s11 PUXC |
||||
33 CALLDICT |
||||
1 PUSHINT |
||||
s4 PUSH |
||||
0 GTINT |
||||
<{ |
||||
s0 POP |
||||
2 PUSHINT |
||||
}> PUSHCONT |
||||
IF |
||||
16059 PUSHINT |
||||
s0 s2 XCHG |
||||
MUL |
||||
20000000 PUSHINT |
||||
ADD |
||||
10000000 PUSHINT |
||||
ADD |
||||
s1 s2 XCHG |
||||
GREATER |
||||
THROWANYIFNOT |
||||
2 GETGLOBVAR |
||||
0 6 3 XCPUXC |
||||
35 CALLDICT |
||||
2DUP |
||||
31 CALLDICT |
||||
-1 PUSHINT |
||||
s7 s6 XCHG2 |
||||
0 PUSHINT |
||||
64 PUSHINT |
||||
s11 PUSH |
||||
12 2 8 PUXC2 |
||||
s1 s8 XCHG |
||||
NEWC |
||||
6 1 BLKSWAP |
||||
395134233 PUSHINT |
||||
s0 s7 XCHG2 |
||||
32 STU |
||||
s1 s5 XCHG |
||||
64 STU |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
s0 PUSH |
||||
ISNULL |
||||
<{ |
||||
s0 POP |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
}> PUSHCONT |
||||
<{ |
||||
STSLICER |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s0 s1 XCHG |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
s5 s6 XCHG |
||||
s3 s4 XCHG |
||||
ROTREV |
||||
32 CALLDICT |
||||
|
||||
38: |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
s2 s10 PUSH2 |
||||
SDEQ |
||||
NOT |
||||
<{ |
||||
2 GETGLOBVAR |
||||
s11 s8 PUSH2 |
||||
35 CALLDICT |
||||
s0 s1 XCHG |
||||
4429 PUSHINT |
||||
s0 s2 XCHG |
||||
31 CALLDICT |
||||
s4 PUSH |
||||
SDEQ |
||||
THROWANYIFNOT |
||||
}> PUSHCONT |
||||
IF |
||||
s12 s8 XCPU |
||||
ADD |
||||
62972 PUSHINT |
||||
s1 PUSH |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
s1 PUSH |
||||
BALANCE |
||||
0 INDEX |
||||
s1 PUSH |
||||
SUB |
||||
10000000 PUSHINT |
||||
TUCK |
||||
MIN |
||||
SUB |
||||
10000000 PUSHINT |
||||
ADD |
||||
SUB |
||||
s6 PUSH |
||||
0 GTINT |
||||
<{ |
||||
s7 s13 XCHG |
||||
s8 s9 XCHG2 |
||||
8 BLKDROP |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 s13 XCHG2 |
||||
s3 s3 s0 XCHG3 |
||||
33 CALLDICT |
||||
s3 s-1 PUXC |
||||
ADD |
||||
s1 s10 XCHG |
||||
SUB |
||||
0 PUSHINT |
||||
0 PUSHINT |
||||
s8 PUSH |
||||
s8 s1 s3 XCHG3 |
||||
s7 s4 XCHG2 |
||||
NEWC |
||||
4 1 BLKSWAP |
||||
1935855772 PUSHINT |
||||
s0 s5 XCHG2 |
||||
32 STU |
||||
s1 s3 XCHG |
||||
64 STU |
||||
s0 s1 XCHG |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
s8 PUSH |
||||
s4 s6 XCHG |
||||
s3 s1 s3 XCHG3 |
||||
s5 s5 XCHG2 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
32 CALLDICT |
||||
s0 s5 XCHG2 |
||||
}> IFREFELSE |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
s2 PUSH |
||||
0 GTINT |
||||
AND |
||||
<{ |
||||
0 PUSHINT |
||||
s0 s6 XCHG |
||||
2 CALLDICT |
||||
0 PUSHINT |
||||
s0 s4 XCHG |
||||
NEWC |
||||
s0 s1 XCHG |
||||
3576854235 PUSHINT |
||||
ROT |
||||
32 STU |
||||
64 STU |
||||
ENDC |
||||
s4 s7 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
s1 s7 XCHG |
||||
PUSHNULL |
||||
PUSHNULL |
||||
32 CALLDICT |
||||
}> PUSHCONT |
||||
<{ |
||||
s5 POP |
||||
2DROP |
||||
}> PUSHCONT |
||||
IFELSE |
||||
|
||||
39: |
||||
2DROP |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
4429 PUSHINT |
||||
s3 s8 PUSH2 |
||||
SDEQ |
||||
THROWANYIFNOT |
||||
s8 s4 XCPU |
||||
SUB |
||||
62972 PUSHINT |
||||
s1 PUSH |
||||
-1 GTINT |
||||
THROWANYIFNOT |
||||
s3 s3 s0 XCHG3 |
||||
s3 s8 PUXC |
||||
33 CALLDICT |
||||
16059 PUSHINT |
||||
s0 s1 XCHG |
||||
20000000 PUSHINT |
||||
ADD |
||||
10000000 PUSHINT |
||||
ADD |
||||
s1 s2 XCHG |
||||
GREATER |
||||
THROWANYIFNOT |
||||
-1 PUSHINT |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
64 PUSHINT |
||||
3 6 6 XCPU2 |
||||
NEWC |
||||
4 1 BLKSWAP |
||||
2078119902 PUSHINT |
||||
s0 s5 XCHG2 |
||||
32 STU |
||||
s1 s3 XCHG |
||||
64 STU |
||||
s0 s1 XCHG |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
s0 PUSH |
||||
ISNULL |
||||
<{ |
||||
s0 POP |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
}> PUSHCONT |
||||
<{ |
||||
STSLICER |
||||
}> PUSHCONT |
||||
IFELSE |
||||
ENDC |
||||
3 0 4 XC2PU |
||||
s3 s3 XCHG2 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
32 CALLDICT |
||||
|
||||
40: |
||||
32 PUSHINT |
||||
SDSKIPFIRST |
||||
32 LDU |
||||
64 LDU |
||||
s1 POP |
||||
LDGRAMS |
||||
s0 POP |
||||
13650 PUSHINT |
||||
s2 PUSH |
||||
395134233 PUSHINT |
||||
EQUAL |
||||
s0 s3 XCHG |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
s1 s3 XCHG |
||||
OR |
||||
s1 s2 XCHG |
||||
THROWANYIFNOT |
||||
s1 s3 XCHG |
||||
ADD |
||||
s0 s2 XCHG |
||||
|
||||
get_wallet_data: |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
257 PUSHINT |
||||
LDI |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
1 3 BLKDROP2 |
||||
36 CALLDICT |
||||
|
||||
111075: |
||||
34 CALLDICT |
||||
|
||||
113617: |
||||
123515602279859691144772641439386770278 PUSHINT |
||||
209801025412363888721030803524359905849 PUSHINT |
||||
209778528950190195973528115415557644819 PUSHINT |
||||
) 19 DICTPUSHCONST |
||||
DICTIGETJMPZ |
||||
11 THROWARG |
@ -0,0 +1,850 @@
|
||||
import { Cell, Slice, StackItem, Address, Builder, InternalMessage, CommonMessageInfo, CellMessage, beginCell, serializeDict, TupleSlice4, readString, stringToCell } from 'ton'; |
||||
import { ContractExecutor, createExecutorFromCode, ExecuteError } from 'ton-nodejs'; |
||||
import BN from 'bn.js'; |
||||
|
||||
export type StateInit = { |
||||
$$type: 'StateInit'; |
||||
code: Cell; |
||||
data: Cell; |
||||
} |
||||
|
||||
export function packStateInit(src: StateInit): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeRef(src.code); |
||||
b_0 = b_0.storeRef(src.data); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackStateInit(src: StateInit, __stack: StackItem[]) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} |
||||
|
||||
export function packTupleStateInit(src: StateInit): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackStateInit(slice: TupleSlice4): StateInit { |
||||
const code = slice.readCell(); |
||||
const data = slice.readCell(); |
||||
return { $$type: 'StateInit', code: code, data: data }; |
||||
} |
||||
export function unpackTupleStateInit(slice: TupleSlice4): StateInit { |
||||
const code = slice.readCell(); |
||||
const data = slice.readCell(); |
||||
return { $$type: 'StateInit', code: code, data: data }; |
||||
} |
||||
export type Context = { |
||||
$$type: 'Context'; |
||||
bounced: boolean; |
||||
sender: Address; |
||||
value: BN; |
||||
raw: Cell; |
||||
} |
||||
|
||||
export function packContext(src: Context): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeBit(src.bounced); |
||||
b_0 = b_0.storeAddress(src.sender); |
||||
b_0 = b_0.storeInt(src.value, 257); |
||||
b_0 = b_0.storeRef(src.raw); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackContext(src: Context, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.bounced ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.sender).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'slice', cell: src.raw }); |
||||
} |
||||
|
||||
export function packTupleContext(src: Context): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.bounced ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.sender).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'slice', cell: src.raw }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackContext(slice: TupleSlice4): Context { |
||||
const bounced = slice.readBoolean(); |
||||
const sender = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const raw = slice.readCell(); |
||||
return { $$type: 'Context', bounced: bounced, sender: sender, value: value, raw: raw }; |
||||
} |
||||
export function unpackTupleContext(slice: TupleSlice4): Context { |
||||
const bounced = slice.readBoolean(); |
||||
const sender = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const raw = slice.readCell(); |
||||
return { $$type: 'Context', bounced: bounced, sender: sender, value: value, raw: raw }; |
||||
} |
||||
export type SendParameters = { |
||||
$$type: 'SendParameters'; |
||||
bounce: boolean; |
||||
to: Address; |
||||
value: BN; |
||||
mode: BN; |
||||
body: Cell | null; |
||||
code: Cell | null; |
||||
data: Cell | null; |
||||
} |
||||
|
||||
export function packSendParameters(src: SendParameters): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeBit(src.bounce); |
||||
b_0 = b_0.storeAddress(src.to); |
||||
b_0 = b_0.storeInt(src.value, 257); |
||||
b_0 = b_0.storeInt(src.mode, 257); |
||||
if (src.body !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.body); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
if (src.code !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.code); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
if (src.data !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.data); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackSendParameters(src: SendParameters, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.bounce ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.to).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'int', value: src.mode }); |
||||
if (src.body !== null) { |
||||
__stack.push({ type: 'cell', cell: src.body }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.code !== null) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.data !== null) { |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleSendParameters(src: SendParameters): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.bounce ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.to).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'int', value: src.mode }); |
||||
if (src.body !== null) { |
||||
__stack.push({ type: 'cell', cell: src.body }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.code !== null) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.data !== null) { |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackSendParameters(slice: TupleSlice4): SendParameters { |
||||
const bounce = slice.readBoolean(); |
||||
const to = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const mode = slice.readBigNumber(); |
||||
const body = slice.readCellOpt(); |
||||
const code = slice.readCellOpt(); |
||||
const data = slice.readCellOpt(); |
||||
return { $$type: 'SendParameters', bounce: bounce, to: to, value: value, mode: mode, body: body, code: code, data: data }; |
||||
} |
||||
export function unpackTupleSendParameters(slice: TupleSlice4): SendParameters { |
||||
const bounce = slice.readBoolean(); |
||||
const to = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const mode = slice.readBigNumber(); |
||||
const body = slice.readCellOpt(); |
||||
const code = slice.readCellOpt(); |
||||
const data = slice.readCellOpt(); |
||||
return { $$type: 'SendParameters', bounce: bounce, to: to, value: value, mode: mode, body: body, code: code, data: data }; |
||||
} |
||||
export type ChangeOwner = { |
||||
$$type: 'ChangeOwner'; |
||||
newOwner: Address; |
||||
} |
||||
|
||||
export function packChangeOwner(src: ChangeOwner): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(3067051791, 32); |
||||
b_0 = b_0.storeAddress(src.newOwner); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackChangeOwner(src: ChangeOwner, __stack: StackItem[]) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.newOwner).endCell() }); |
||||
} |
||||
|
||||
export function packTupleChangeOwner(src: ChangeOwner): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.newOwner).endCell() }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackChangeOwner(slice: TupleSlice4): ChangeOwner { |
||||
const newOwner = slice.readAddress(); |
||||
return { $$type: 'ChangeOwner', newOwner: newOwner }; |
||||
} |
||||
export function unpackTupleChangeOwner(slice: TupleSlice4): ChangeOwner { |
||||
const newOwner = slice.readAddress(); |
||||
return { $$type: 'ChangeOwner', newOwner: newOwner }; |
||||
} |
||||
export type TokenTransfer = { |
||||
$$type: 'TokenTransfer'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
destination: Address; |
||||
responseDestination: Address | null; |
||||
customPayload: Cell | null; |
||||
forwardTonAmount: BN; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenTransfer(src: TokenTransfer): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(260734629, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.destination); |
||||
b_0 = b_0.storeAddress(src.responseDestination); |
||||
if (src.customPayload !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.customPayload); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
b_0 = b_0.storeCoins(src.forwardTonAmount); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenTransfer(src: TokenTransfer, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.destination).endCell() }); |
||||
if (src.responseDestination !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseDestination).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.customPayload !== null) { |
||||
__stack.push({ type: 'cell', cell: src.customPayload }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenTransfer(src: TokenTransfer): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.destination).endCell() }); |
||||
if (src.responseDestination !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseDestination).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.customPayload !== null) { |
||||
__stack.push({ type: 'cell', cell: src.customPayload }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenTransfer(slice: TupleSlice4): TokenTransfer { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const destination = slice.readAddress(); |
||||
const responseDestination = slice.readAddressOpt(); |
||||
const customPayload = slice.readCellOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransfer', queryId: queryId, amount: amount, destination: destination, responseDestination: responseDestination, customPayload: customPayload, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenTransfer(slice: TupleSlice4): TokenTransfer { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const destination = slice.readAddress(); |
||||
const responseDestination = slice.readAddressOpt(); |
||||
const customPayload = slice.readCellOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransfer', queryId: queryId, amount: amount, destination: destination, responseDestination: responseDestination, customPayload: customPayload, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenTransferInternal = { |
||||
$$type: 'TokenTransferInternal'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
from: Address; |
||||
responseAddress: Address | null; |
||||
forwardTonAmount: BN; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenTransferInternal(src: TokenTransferInternal): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(395134233, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.from); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
b_0 = b_0.storeCoins(src.forwardTonAmount); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenTransferInternal(src: TokenTransferInternal, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenTransferInternal(src: TokenTransferInternal): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenTransferInternal(slice: TupleSlice4): TokenTransferInternal { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransferInternal', queryId: queryId, amount: amount, from: from, responseAddress: responseAddress, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenTransferInternal(slice: TupleSlice4): TokenTransferInternal { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransferInternal', queryId: queryId, amount: amount, from: from, responseAddress: responseAddress, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenNotification = { |
||||
$$type: 'TokenNotification'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
from: Address; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenNotification(src: TokenNotification): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1935855772, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.from); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenNotification(src: TokenNotification, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenNotification(src: TokenNotification): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenNotification(slice: TupleSlice4): TokenNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenNotification', queryId: queryId, amount: amount, from: from, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenNotification(slice: TupleSlice4): TokenNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenNotification', queryId: queryId, amount: amount, from: from, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenBurn = { |
||||
$$type: 'TokenBurn'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
owner: Address; |
||||
responseAddress: Address | null; |
||||
} |
||||
|
||||
export function packTokenBurn(src: TokenBurn): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1499400124, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenBurn(src: TokenBurn, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenBurn(src: TokenBurn): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenBurn(slice: TupleSlice4): TokenBurn { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurn', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export function unpackTupleTokenBurn(slice: TupleSlice4): TokenBurn { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurn', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export type TokenBurnNotification = { |
||||
$$type: 'TokenBurnNotification'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
owner: Address; |
||||
responseAddress: Address | null; |
||||
} |
||||
|
||||
export function packTokenBurnNotification(src: TokenBurnNotification): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(2078119902, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenBurnNotification(src: TokenBurnNotification, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenBurnNotification(src: TokenBurnNotification): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenBurnNotification(slice: TupleSlice4): TokenBurnNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurnNotification', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export function unpackTupleTokenBurnNotification(slice: TupleSlice4): TokenBurnNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurnNotification', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export type TokenExcesses = { |
||||
$$type: 'TokenExcesses'; |
||||
queryId: BN; |
||||
} |
||||
|
||||
export function packTokenExcesses(src: TokenExcesses): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(3576854235, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenExcesses(src: TokenExcesses, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
} |
||||
|
||||
export function packTupleTokenExcesses(src: TokenExcesses): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenExcesses(slice: TupleSlice4): TokenExcesses { |
||||
const queryId = slice.readBigNumber(); |
||||
return { $$type: 'TokenExcesses', queryId: queryId }; |
||||
} |
||||
export function unpackTupleTokenExcesses(slice: TupleSlice4): TokenExcesses { |
||||
const queryId = slice.readBigNumber(); |
||||
return { $$type: 'TokenExcesses', queryId: queryId }; |
||||
} |
||||
export type TokenUpdateContent = { |
||||
$$type: 'TokenUpdateContent'; |
||||
content: Cell | null; |
||||
} |
||||
|
||||
export function packTokenUpdateContent(src: TokenUpdateContent): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1862840892, 32); |
||||
if (src.content !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.content); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenUpdateContent(src: TokenUpdateContent, __stack: StackItem[]) { |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenUpdateContent(src: TokenUpdateContent): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenUpdateContent(slice: TupleSlice4): TokenUpdateContent { |
||||
const content = slice.readCellOpt(); |
||||
return { $$type: 'TokenUpdateContent', content: content }; |
||||
} |
||||
export function unpackTupleTokenUpdateContent(slice: TupleSlice4): TokenUpdateContent { |
||||
const content = slice.readCellOpt(); |
||||
return { $$type: 'TokenUpdateContent', content: content }; |
||||
} |
||||
export type JettonData = { |
||||
$$type: 'JettonData'; |
||||
totalSupply: BN; |
||||
mintable: boolean; |
||||
owner: Address; |
||||
content: Cell | null; |
||||
walletCode: Cell; |
||||
} |
||||
|
||||
export function packJettonData(src: JettonData): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeInt(src.totalSupply, 257); |
||||
b_0 = b_0.storeBit(src.mintable); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
if (src.content !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.content); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
b_0 = b_0.storeRef(src.walletCode); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackJettonData(src: JettonData, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.totalSupply }); |
||||
__stack.push({ type: 'int', value: src.mintable ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
} |
||||
|
||||
export function packTupleJettonData(src: JettonData): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.totalSupply }); |
||||
__stack.push({ type: 'int', value: src.mintable ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackJettonData(slice: TupleSlice4): JettonData { |
||||
const totalSupply = slice.readBigNumber(); |
||||
const mintable = slice.readBoolean(); |
||||
const owner = slice.readAddress(); |
||||
const content = slice.readCellOpt(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonData', totalSupply: totalSupply, mintable: mintable, owner: owner, content: content, walletCode: walletCode }; |
||||
} |
||||
export function unpackTupleJettonData(slice: TupleSlice4): JettonData { |
||||
const totalSupply = slice.readBigNumber(); |
||||
const mintable = slice.readBoolean(); |
||||
const owner = slice.readAddress(); |
||||
const content = slice.readCellOpt(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonData', totalSupply: totalSupply, mintable: mintable, owner: owner, content: content, walletCode: walletCode }; |
||||
} |
||||
export type JettonWalletData = { |
||||
$$type: 'JettonWalletData'; |
||||
balance: BN; |
||||
owner: Address; |
||||
master: Address; |
||||
walletCode: Cell; |
||||
} |
||||
|
||||
export function packJettonWalletData(src: JettonWalletData): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeInt(src.balance, 257); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.master); |
||||
b_0 = b_0.storeRef(src.walletCode); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackJettonWalletData(src: JettonWalletData, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.balance }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.master).endCell() }); |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
} |
||||
|
||||
export function packTupleJettonWalletData(src: JettonWalletData): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.balance }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.master).endCell() }); |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackJettonWalletData(slice: TupleSlice4): JettonWalletData { |
||||
const balance = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const master = slice.readAddress(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonWalletData', balance: balance, owner: owner, master: master, walletCode: walletCode }; |
||||
} |
||||
export function unpackTupleJettonWalletData(slice: TupleSlice4): JettonWalletData { |
||||
const balance = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const master = slice.readAddress(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonWalletData', balance: balance, owner: owner, master: master, walletCode: walletCode }; |
||||
} |
||||
export type Mint = { |
||||
$$type: 'Mint'; |
||||
amount: BN; |
||||
} |
||||
|
||||
export function packMint(src: Mint): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(2737462367, 32); |
||||
b_0 = b_0.storeInt(src.amount, 257); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackMint(src: Mint, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
} |
||||
|
||||
export function packTupleMint(src: Mint): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackMint(slice: TupleSlice4): Mint { |
||||
const amount = slice.readBigNumber(); |
||||
return { $$type: 'Mint', amount: amount }; |
||||
} |
||||
export function unpackTupleMint(slice: TupleSlice4): Mint { |
||||
const amount = slice.readBigNumber(); |
||||
return { $$type: 'Mint', amount: amount }; |
||||
} |
||||
export async function JettonDefaultWallet_init(master: Address, owner: Address) { |
||||
const __code = 'te6ccgECKQEABYcAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASAlJgIBIAYHAgFIEhMCASAICQIB7hARAgFICgsAR7OQ4AOWAuYDlgLgA5YAJZmZk/IBkOQDlgLgA5YAJZQPl/+ToQT1RwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo4zMO1E0NQB+GKBAQHXAPpAAQH6QAFDMGwTVQLwKMj4QgHMVSBQI4EBAc8AAc8WAc8Wye1U4CCCEA+KfqW64wIgghAXjUUZuuMCghBZXwe8uuMCMIDA0ODwALQgbvLQgIAN4w7UTQ1AH4YoEBAdcA+kABAfpAAUMwbBMD0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeJtAtIAAZRsEtQS3voAUWYWFURANxCJEHhVBfAlyPhCAcxVIFAjgQEBzwABzxYBzxbJ7VQAyjDtRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6AFFVFRRDMDYQeBBnVQTwJsj4QgHMVSBQI4EBAc8AAc8WAc8Wye1UALztRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEFlfB7y68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4hRDMDQQVhBFVQLwJ8j4QgHMVSBQI4EBAc8AAc8WAc8Wye1UAAbywIIAFSUfwHKAOBwAcoAgAAkcFnwCYAIBIBQVAE/cAQa5Dpj+mfmP0AGECaqRFBCAvGoozdAcEIPe7L710J2Il5egnQAUAgEgFhcCASAdHgIBIBgZAgEgGxwB9zIcQHKAVAH8B5wAcoCUAXPFlAD+gJwAcpoI26zJW6zsY49f/AeyHDwHnDwHiRus5l/8B4E8AJQBMyVNANw8B7iJG6zmX/wHgTwAlAEzJU0A3DwHuJw8B4Cf/AeAslYzJYzMwFw8B7iIW6zmH/wHgHwAgHMlDFw8B7iyQGAaACUbDH6ADFx1yH6ADH6ADCnA6sAgAAT7AAApHADyMxDE1AjgQEBzwABzxYBzxbJgAG8AtD0BDAgggDYrwGAEPQPb6Hy4GRtAoIA2K8BgBD0D2+h8uBkEoIA2K8BAoAQ9BfI9ADJQAPwIoAIBIB8gAgEgIiMADz4QlMS8CMwgAacbCL4QW8kgRFNUzvHBfL0UbehggD1/CHC//L0QzBSPPAhcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQgZPAjXPAff1B2cIBAK1RMORiAhAGTIVVCCEBeNRRlQB8sfFcs/UAP6AgHPFgEgbpUwcAHLAZLPFuIB+gIBzxbJEFYQNFnwIAHvPhBbyRTKscFs44S+EJTuPAjAYERTQLwHyTHBfL03lHIoIIA9fwhwv/y9CH4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAlhB9UIlfCOMNJW6zIsIAsI4dcAbwAnAEyAGCENUydttYyx/LP8kQR0MwF21t8CCSNVvigJADTFv4QW8kgRFNUzjHBfL0UYShggD1/CHC//L0QzBSOfAhgT67AYIJMS0AoIIImJaAoBK88vR/cAOAQFQzZshVMIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiyVQTBFAzbW3wIIAByUE1DMPAhUjCgGqFwcChIE1B0yFUwghBzYtCcUAXLHxPLPwH6AgHPFgHPFskoEEZDE1BVbW3wIFAFADe/2BdqJoagD8MUCAgOuAfSAAgP0gAKGYNgn4EkAgJzJygACazx+BFAAHGt6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcA='; |
||||
const depends = new Map<string, Cell>(); |
||||
depends.set('55471', Cell.fromBoc(Buffer.from('te6ccgECKQEABYcAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASAlJgIBIAYHAgFIEhMCASAICQIB7hARAgFICgsAR7OQ4AOWAuYDlgLgA5YAJZmZk/IBkOQDlgLgA5YAJZQPl/+ToQT1RwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo4zMO1E0NQB+GKBAQHXAPpAAQH6QAFDMGwTVQLwKMj4QgHMVSBQI4EBAc8AAc8WAc8Wye1U4CCCEA+KfqW64wIgghAXjUUZuuMCghBZXwe8uuMCMIDA0ODwALQgbvLQgIAN4w7UTQ1AH4YoEBAdcA+kABAfpAAUMwbBMD0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeJtAtIAAZRsEtQS3voAUWYWFURANxCJEHhVBfAlyPhCAcxVIFAjgQEBzwABzxYBzxbJ7VQAyjDtRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6AFFVFRRDMDYQeBBnVQTwJsj4QgHMVSBQI4EBAc8AAc8WAc8Wye1UALztRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEFlfB7y68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4hRDMDQQVhBFVQLwJ8j4QgHMVSBQI4EBAc8AAc8WAc8Wye1UAAbywIIAFSUfwHKAOBwAcoAgAAkcFnwCYAIBIBQVAE/cAQa5Dpj+mfmP0AGECaqRFBCAvGoozdAcEIPe7L710J2Il5egnQAUAgEgFhcCASAdHgIBIBgZAgEgGxwB9zIcQHKAVAH8B5wAcoCUAXPFlAD+gJwAcpoI26zJW6zsY49f/AeyHDwHnDwHiRus5l/8B4E8AJQBMyVNANw8B7iJG6zmX/wHgTwAlAEzJU0A3DwHuJw8B4Cf/AeAslYzJYzMwFw8B7iIW6zmH/wHgHwAgHMlDFw8B7iyQGAaACUbDH6ADFx1yH6ADH6ADCnA6sAgAAT7AAApHADyMxDE1AjgQEBzwABzxYBzxbJgAG8AtD0BDAgggDYrwGAEPQPb6Hy4GRtAoIA2K8BgBD0D2+h8uBkEoIA2K8BAoAQ9BfI9ADJQAPwIoAIBIB8gAgEgIiMADz4QlMS8CMwgAacbCL4QW8kgRFNUzvHBfL0UbehggD1/CHC//L0QzBSPPAhcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQgZPAjXPAff1B2cIBAK1RMORiAhAGTIVVCCEBeNRRlQB8sfFcs/UAP6AgHPFgEgbpUwcAHLAZLPFuIB+gIBzxbJEFYQNFnwIAHvPhBbyRTKscFs44S+EJTuPAjAYERTQLwHyTHBfL03lHIoIIA9fwhwv/y9CH4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAlhB9UIlfCOMNJW6zIsIAsI4dcAbwAnAEyAGCENUydttYyx/LP8kQR0MwF21t8CCSNVvigJADTFv4QW8kgRFNUzjHBfL0UYShggD1/CHC//L0QzBSOfAhgT67AYIJMS0AoIIImJaAoBK88vR/cAOAQFQzZshVMIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiyVQTBFAzbW3wIIAByUE1DMPAhUjCgGqFwcChIE1B0yFUwghBzYtCcUAXLHxPLPwH6AgHPFgHPFskoEEZDE1BVbW3wIFAFADe/2BdqJoagD8MUCAgOuAfSAAgP0gAKGYNgn4EkAgJzJygACazx+BFAAHGt6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcA=', 'base64'))[0]); |
||||
let systemCell = beginCell().storeDict(serializeDict(depends, 16, (src, v) => v.refs.push(src))).endCell(); |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'cell', cell: systemCell }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(master).endCell() }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(owner).endCell() }); |
||||
let codeCell = Cell.fromBoc(Buffer.from(__code, 'base64'))[0]; |
||||
let executor = await createExecutorFromCode({ code: codeCell, data: new Cell() }); |
||||
let res = await executor.get('init_JettonDefaultWallet', __stack, { debug: true }); |
||||
if (res.debugLogs.length > 0) { console.warn(res.debugLogs); } |
||||
let data = res.stack.readCell(); |
||||
return { code: codeCell, data }; |
||||
} |
||||
|
||||
export const JettonDefaultWallet_errors: { [key: string]: string } = { |
||||
'2': `Stack undeflow`, |
||||
'3': `Stack overflow`, |
||||
'4': `Integer overflow`, |
||||
'5': `Integer out of expected range`, |
||||
'6': `Invalid opcode`, |
||||
'7': `Type check error`, |
||||
'8': `Cell overflow`, |
||||
'9': `Cell underflow`, |
||||
'10': `Dictionary error`, |
||||
'13': `Out of gas error`, |
||||
'32': `Method ID not found`, |
||||
'34': `Action is invalid or not supported`, |
||||
'37': `Not enough TON`, |
||||
'38': `Not enough extra-currencies`, |
||||
'128': `Null reference exception`, |
||||
'129': `Invalid serialization prefix`, |
||||
'130': `Invalid incoming message`, |
||||
'131': `Constraints error`, |
||||
'132': `Access denied`, |
||||
'133': `Contract stopped`, |
||||
'134': `Invalid argument`, |
||||
'4429': `Invalid sender`, |
||||
'13650': `Invalid bounced message`, |
||||
'16059': `Invalid value`, |
||||
'62972': `Invalid balance`, |
||||
} |
||||
|
||||
export class JettonDefaultWallet { |
||||
readonly executor: ContractExecutor;
|
||||
constructor(executor: ContractExecutor) { this.executor = executor; }
|
||||
|
||||
async send(args: { amount: BN, from?: Address, debug?: boolean }, message: TokenTransfer | TokenTransferInternal | TokenBurn) { |
||||
let body: Cell | null = null; |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenTransfer') { |
||||
body = packTokenTransfer(message); |
||||
} |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenTransferInternal') { |
||||
body = packTokenTransferInternal(message); |
||||
} |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurn') { |
||||
body = packTokenBurn(message); |
||||
} |
||||
if (body === null) { throw new Error('Invalid message type'); } |
||||
try { |
||||
let r = await this.executor.internal(new InternalMessage({ |
||||
to: this.executor.address, |
||||
from: args.from || this.executor.address, |
||||
bounce: false, |
||||
value: args.amount, |
||||
body: new CommonMessageInfo({ |
||||
body: new CellMessage(body!) |
||||
}) |
||||
}), { debug: args.debug }); |
||||
if (r.debugLogs.length > 0) { console.warn(r.debugLogs); } |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (JettonDefaultWallet_errors[e.exitCode.toString()]) { |
||||
throw new Error(JettonDefaultWallet_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
async getGetWalletData() { |
||||
try { |
||||
let __stack: StackItem[] = []; |
||||
let result = await this.executor.get('get_wallet_data', __stack, { debug: true }); |
||||
if (result.debugLogs.length > 0) { console.warn(result.debugLogs); } |
||||
return unpackStackJettonWalletData(result.stack); |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (JettonDefaultWallet_errors[e.exitCode.toString()]) { |
||||
throw new Error(JettonDefaultWallet_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
} |
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -0,0 +1,456 @@
|
||||
forall X -> X __tact_not_null(X x) { throw_if(128, null?(x)); return x; } |
||||
|
||||
global (int, slice, int, slice) __tact_context; |
||||
global cell __tact_context_sys; |
||||
|
||||
(int, slice, int, slice) __tact_context_get() inline { return __tact_context; } |
||||
|
||||
() __tact_verify_address(slice address) inline { |
||||
throw_unless(134, address.slice_bits() != 267); |
||||
} |
||||
|
||||
(slice, slice) __tact_load_address(slice cs) inline { |
||||
slice raw = cs~load_msg_addr(); |
||||
__tact_verify_address(raw); |
||||
return (cs, raw); |
||||
} |
||||
|
||||
(slice, slice) __tact_load_address_opt(slice cs) inline { |
||||
slice raw = cs~load_msg_addr(); |
||||
if (raw.preload_uint(2) != 0) { |
||||
__tact_verify_address(raw); |
||||
return (cs, raw); |
||||
} else { |
||||
return (cs, null()); |
||||
} |
||||
} |
||||
|
||||
builder __tact_store_address(builder b, slice address) inline { |
||||
__tact_verify_address(address); |
||||
b = b.store_slice(address); |
||||
return b; |
||||
} |
||||
|
||||
builder __tact_store_address_opt(builder b, slice address) inline { |
||||
if (null?(address)) { |
||||
b = b.store_uint(0, 2); |
||||
return b; |
||||
} else { |
||||
return __tact_store_address(b, address); |
||||
} |
||||
} |
||||
|
||||
slice __tact_compute_contract_address(int chain, cell code, cell data) { |
||||
var b = begin_cell(); |
||||
b = b.store_uint(0, 2); |
||||
b = b.store_uint(3, 2); |
||||
b = b.store_uint(0, 1); |
||||
b = b.store_ref(code); |
||||
b = b.store_ref(data); |
||||
var hash = cell_hash(b.end_cell()); |
||||
var b2 = begin_cell(); |
||||
b2 = b2.store_uint(2, 2); |
||||
b2 = b2.store_uint(0, 1); |
||||
b2 = b2.store_int(chain, 8); |
||||
b2 = b2.store_uint(hash, 256); |
||||
return b2.end_cell().begin_parse(); |
||||
} |
||||
|
||||
int __tact_address_eq(slice a, slice b) inline { |
||||
return equal_slice_bits(a, b); |
||||
} |
||||
|
||||
cell __tact_dict_set_code(cell dict, int id, cell code) inline { |
||||
return udict_set_ref(dict, 16, id, code); |
||||
} |
||||
|
||||
cell __tact_dict_get_code(cell dict, int id) inline { |
||||
var (data, ok) = udict_get_ref?(dict, 16, id); |
||||
throw_unless(100, ok); |
||||
return data; |
||||
} |
||||
|
||||
builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, slice, int, slice) v) inline { |
||||
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload) = v; |
||||
build_0 = store_uint(build_0, 395134233, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
build_0 = store_coins(build_0, v'amount); |
||||
build_0 = __tact_store_address(build_0, v'from); |
||||
build_0 = __tact_store_address_opt(build_0, v'responseAddress); |
||||
build_0 = store_coins(build_0, v'forwardTonAmount); |
||||
build_0 = store_slice(build_0, v'forwardPayload); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice) v) inline { |
||||
return __gen_write_TokenTransferInternal(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
(slice, ((int, int, slice, slice))) __gen_read_TokenBurnNotification(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 2078119902); |
||||
var v'queryId = sc_0~load_uint(64); |
||||
var v'amount = sc_0~load_coins(); |
||||
var v'owner = sc_0~__tact_load_address(); |
||||
var v'responseAddress = sc_0~__tact_load_address_opt(); |
||||
return (sc_0, (v'queryId, v'amount, v'owner, v'responseAddress)); |
||||
} |
||||
|
||||
builder __gen_write_TokenExcesses(builder build_0, (int) v) inline { |
||||
var (v'queryId) = v; |
||||
build_0 = store_uint(build_0, 3576854235, 32); |
||||
build_0 = store_uint(build_0, v'queryId, 64); |
||||
return build_0; |
||||
} |
||||
|
||||
cell __gen_writecell_TokenExcesses((int) v) inline { |
||||
return __gen_write_TokenExcesses(begin_cell(), v).end_cell(); |
||||
} |
||||
|
||||
(slice, ((cell))) __gen_read_TokenUpdateContent(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 1862840892); |
||||
var v'content = null(); |
||||
if (sc_0~load_int(1)) { |
||||
v'content = sc_0~load_ref(); |
||||
} |
||||
return (sc_0, (v'content)); |
||||
} |
||||
|
||||
(slice, ((int))) __gen_read_Mint(slice sc_0) inline { |
||||
throw_unless(129, sc_0~load_uint(32) == 2737462367); |
||||
var v'amount = sc_0~load_int(257); |
||||
return (sc_0, (v'amount)); |
||||
} |
||||
|
||||
builder __gen_write_JettonDefaultWallet(builder build_0, (int, slice, slice) v) inline { |
||||
var (v'balance, v'owner, v'master) = v; |
||||
build_0 = store_int(build_0, v'balance, 257); |
||||
build_0 = __tact_store_address(build_0, v'owner); |
||||
build_0 = __tact_store_address(build_0, v'master); |
||||
return build_0; |
||||
} |
||||
|
||||
builder __gen_write_SampleJetton(builder build_0, (int, slice, cell, int) v) inline { |
||||
var (v'totalSupply, v'owner, v'content, v'mintable) = v; |
||||
build_0 = store_coins(build_0, v'totalSupply); |
||||
build_0 = __tact_store_address(build_0, v'owner); |
||||
if (null?(v'content)) { |
||||
build_0 = store_int(build_0, false, 1); |
||||
} else { |
||||
build_0 = store_int(build_0, true, 1); |
||||
build_0 = store_ref(build_0, v'content); |
||||
} |
||||
build_0 = store_int(build_0, v'mintable, 1); |
||||
return build_0; |
||||
} |
||||
|
||||
(slice, ((int, slice, cell, int))) __gen_read_SampleJetton(slice sc_0) inline { |
||||
var v'totalSupply = sc_0~load_coins(); |
||||
var v'owner = sc_0~__tact_load_address(); |
||||
var v'content = null(); |
||||
if (sc_0~load_int(1)) { |
||||
v'content = sc_0~load_ref(); |
||||
} |
||||
var v'mintable = sc_0~load_int(1); |
||||
return (sc_0, (v'totalSupply, v'owner, v'content, v'mintable)); |
||||
} |
||||
|
||||
_ __gen_StateInit_get_code((cell, cell) v) inline { |
||||
var (v'code, v'data) = v; |
||||
return v'code; |
||||
} |
||||
|
||||
_ __gen_Context_get_sender((int, slice, int, slice) v) inline { |
||||
var (v'bounced, v'sender, v'value, v'raw) = v; |
||||
return v'sender; |
||||
} |
||||
|
||||
(int, slice, cell, int) __gen_load_SampleJetton() inline { |
||||
slice sc = get_data().begin_parse(); |
||||
__tact_context_sys = sc~load_ref(); |
||||
return sc~__gen_read_SampleJetton(); |
||||
} |
||||
|
||||
() __gen_store_SampleJetton((int, slice, cell, int) v) impure inline { |
||||
builder b = begin_cell(); |
||||
b = b.store_ref(__tact_context_sys); |
||||
b = __gen_write_SampleJetton(b, v); |
||||
set_data(b.end_cell()); |
||||
} |
||||
|
||||
builder storeBool(builder $s, int $value) impure { |
||||
if ($value) { |
||||
return store_int($s, (- 1), 1); |
||||
} else { |
||||
return store_int($s, 0, 1); |
||||
} |
||||
} |
||||
|
||||
cell emptyCell() impure { |
||||
return end_cell(begin_cell()); |
||||
} |
||||
|
||||
slice __gen_Cell_asSlice(cell $self) impure { |
||||
var ($self) = $self; |
||||
return begin_parse($self); |
||||
} |
||||
|
||||
slice emptySlice() impure { |
||||
return __gen_Cell_asSlice(emptyCell()); |
||||
} |
||||
|
||||
slice contractAddress((cell, cell) $s) impure { |
||||
var (($s'code, $s'data)) = $s; |
||||
return __tact_compute_contract_address(0, $s'code, $s'data); |
||||
} |
||||
|
||||
() send((int, slice, int, int, cell, cell, cell) $params) impure { |
||||
var (($params'bounce, $params'to, $params'value, $params'mode, $params'body, $params'code, $params'data)) = $params; |
||||
builder $b = begin_cell(); |
||||
$b = store_int($b, 1, 2); |
||||
$b = storeBool($b, $params'bounce); |
||||
$b = store_int($b, 0, 3); |
||||
$b = __tact_store_address($b, $params'to); |
||||
$b = store_coins($b, $params'value); |
||||
$b = store_int($b, 0, ((((1 + 4) + 4) + 64) + 32)); |
||||
if (((~ null?($params'code)) | (~ null?($params'data)))) { |
||||
$b = storeBool($b, true); |
||||
builder $bc = begin_cell(); |
||||
$bc = storeBool($bc, false); |
||||
$bc = storeBool($bc, false); |
||||
if ((~ null?($params'code))) { |
||||
$bc = storeBool($bc, true); |
||||
$bc = store_ref($bc, __tact_not_null($params'code)); |
||||
} else { |
||||
$bc = storeBool($bc, false); |
||||
} |
||||
if ((~ null?($params'data))) { |
||||
$bc = storeBool($bc, true); |
||||
$bc = store_ref($bc, __tact_not_null($params'data)); |
||||
} else { |
||||
$bc = storeBool($bc, false); |
||||
} |
||||
$bc = storeBool($bc, false); |
||||
$b = storeBool($b, true); |
||||
$b = store_ref($b, end_cell($bc)); |
||||
} else { |
||||
$b = storeBool($b, false); |
||||
} |
||||
cell $body = $params'body; |
||||
if ((~ null?($body))) { |
||||
$b = storeBool($b, true); |
||||
$b = store_ref($b, __tact_not_null($body)); |
||||
} else { |
||||
$b = storeBool($b, false); |
||||
} |
||||
cell $c = end_cell($b); |
||||
send_raw_message($c, $params'mode); |
||||
} |
||||
|
||||
cell __gen_JettonDefaultWallet_init(cell sys', slice $master, slice $owner) { |
||||
var (($self'balance, $self'owner, $self'master)) = (null(), null(), null()); |
||||
$self'balance = 0; |
||||
$self'owner = $owner; |
||||
$self'master = $master; |
||||
var b' = begin_cell(); |
||||
b' = b'.store_ref(sys'); |
||||
b' = __gen_write_JettonDefaultWallet(b', ($self'balance, $self'owner, $self'master)); |
||||
return b'.end_cell(); |
||||
} |
||||
|
||||
(cell, cell) __gen_JettonDefaultWallet_init_child(cell sys', slice $master, slice $owner) { |
||||
slice sc' = sys'.begin_parse(); |
||||
cell source = sc'~load_dict(); |
||||
cell mine = __tact_dict_get_code(source, 55471); |
||||
cell contracts = new_dict(); |
||||
cell code_55471 = __tact_dict_get_code(source, 55471); |
||||
contracts = __tact_dict_set_code(contracts, 55471, code_55471); |
||||
cell sys = begin_cell().store_dict(contracts).end_cell(); |
||||
return (mine, __gen_JettonDefaultWallet_init(sys, $master, $owner)); |
||||
} |
||||
|
||||
cell __gen_SampleJetton_init(cell sys', slice $owner, cell $content) { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = (null(), null(), null(), null()); |
||||
$self'totalSupply = 0; |
||||
$self'owner = $owner; |
||||
$self'mintable = true; |
||||
$self'content = $content; |
||||
var b' = begin_cell(); |
||||
b' = b'.store_ref(sys'); |
||||
b' = __gen_write_SampleJetton(b', ($self'totalSupply, $self'owner, $self'content, $self'mintable)); |
||||
return b'.end_cell(); |
||||
} |
||||
|
||||
((int, slice, cell, int), (cell, cell)) __gen_SampleJetton_getJettonWalletInit((int, slice, cell, int) $self, slice $address) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), __gen_JettonDefaultWallet_init_child(__tact_context_sys, my_address(), $address)); |
||||
} |
||||
|
||||
slice __gen_SampleJetton_get_wallet_address((int, slice, cell, int) $self, slice $owner) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_getJettonWalletInit($owner); |
||||
return contractAddress(($winit'code, $winit'data)); |
||||
} |
||||
|
||||
_ __gen_get_get_wallet_address(slice $owner) method_id(103289) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var res = __gen_SampleJetton_get_wallet_address(self, $owner); |
||||
return res; |
||||
} |
||||
|
||||
(int, int, slice, cell, cell) __gen_SampleJetton_get_jetton_data((int, slice, cell, int) $self) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
return ($self'totalSupply, $self'mintable, $self'owner, $self'content, __gen_StateInit_get_code(($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_getJettonWalletInit(my_address()))); |
||||
} |
||||
|
||||
_ __gen_get_get_jetton_data() method_id(106029) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var res = __gen_SampleJetton_get_jetton_data(self); |
||||
return res; |
||||
} |
||||
|
||||
((int, slice, cell, int), ()) __gen_SampleJetton_mint((int, slice, cell, int) $self, slice $to, int $amount, slice $responseAddress) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
$self'totalSupply = ($self'totalSupply + $amount); |
||||
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_getJettonWalletInit($to); |
||||
slice $walletAddress = contractAddress(($winit'code, $winit'data)); |
||||
send((false, $walletAddress, 0, 64, __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, emptySlice())), $winit'code, $winit'data)); |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
((int, slice, cell, int), ()) __gen_SampleJetton_requireWallet((int, slice, cell, int) $self, slice $owner) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_getJettonWalletInit($owner); |
||||
throw_unless(4429, __tact_address_eq(contractAddress(($winit'code, $winit'data)), $ctx'sender)); |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
((int, slice, cell, int), ()) __gen_SampleJetton_requireOwner((int, slice, cell, int) $self) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
throw_unless(132, __tact_address_eq(__gen_Context_get_sender(__tact_context_get()), $self'owner)); |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
slice __gen_SampleJetton_owner((int, slice, cell, int) $self) impure { |
||||
var (($self'totalSupply, $self'owner, $self'content, $self'mintable)) = $self; |
||||
return $self'owner; |
||||
} |
||||
|
||||
_ __gen_get_owner() method_id(83229) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var res = __gen_SampleJetton_owner(self); |
||||
return res; |
||||
} |
||||
|
||||
(((int, slice, cell, int)), ()) __gen_SampleJetton_receive_Mint((int, slice, cell, int) $self, (int) $msg) impure { |
||||
var ($self'totalSupply, $self'owner, $self'content, $self'mintable) = $self; |
||||
var ($msg'amount) = $msg; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_mint($ctx'sender, $msg'amount, $ctx'sender); |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
((int, slice, cell, int), ()) __gen_SampleJetton_receive_comment_cd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2((int, slice, cell, int) $self) impure { |
||||
var ($self'totalSupply, $self'owner, $self'content, $self'mintable) = $self; |
||||
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get(); |
||||
($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_mint($ctx'sender, 1000000000, $ctx'sender); |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
(((int, slice, cell, int)), ()) __gen_SampleJetton_receive_TokenUpdateContent((int, slice, cell, int) $self, (cell) $msg) impure { |
||||
var ($self'totalSupply, $self'owner, $self'content, $self'mintable) = $self; |
||||
var ($msg'content) = $msg; |
||||
($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_requireOwner(); |
||||
$self'content = $msg'content; |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
(((int, slice, cell, int)), ()) __gen_SampleJetton_receive_TokenBurnNotification((int, slice, cell, int) $self, (int, int, slice, slice) $msg) impure { |
||||
var ($self'totalSupply, $self'owner, $self'content, $self'mintable) = $self; |
||||
var ($msg'queryId, $msg'amount, $msg'owner, $msg'responseAddress) = $msg; |
||||
($self'totalSupply, $self'owner, $self'content, $self'mintable)~__gen_SampleJetton_requireWallet($msg'owner); |
||||
$self'totalSupply = ($self'totalSupply - $msg'amount); |
||||
if ((~ null?($msg'responseAddress))) { |
||||
send((false, $msg'responseAddress, 0, (64 + 2), __gen_writecell_TokenExcesses(($msg'queryId)), null(), null())); |
||||
} |
||||
return (($self'totalSupply, $self'owner, $self'content, $self'mintable), ()); |
||||
} |
||||
|
||||
|
||||
() recv_internal(int msg_value, cell in_msg_cell, slice in_msg) impure { |
||||
|
||||
;; Parse incoming message |
||||
int op = 0; |
||||
if (slice_bits(in_msg) >= 32) { |
||||
op = in_msg.preload_uint(32); |
||||
} |
||||
var cs = in_msg_cell.begin_parse(); |
||||
var msg_flags = cs~load_uint(4); |
||||
var msg_bounced = ((msg_flags & 1) == 1 ? true : false); |
||||
slice msg_sender_addr = cs~load_msg_addr(); |
||||
__tact_context = (msg_bounced, msg_sender_addr, msg_value, cs); |
||||
|
||||
;; Handle bounced messages |
||||
if (msg_bounced) { |
||||
return (); |
||||
} |
||||
|
||||
;; Receive Mint message |
||||
if (op == 2737462367) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var msg = in_msg~__gen_read_Mint(); |
||||
self~__gen_SampleJetton_receive_Mint(msg); |
||||
__gen_store_SampleJetton(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Receive TokenUpdateContent message |
||||
if (op == 1862840892) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var msg = in_msg~__gen_read_TokenUpdateContent(); |
||||
self~__gen_SampleJetton_receive_TokenUpdateContent(msg); |
||||
__gen_store_SampleJetton(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Receive TokenBurnNotification message |
||||
if (op == 2078119902) { |
||||
var self = __gen_load_SampleJetton(); |
||||
var msg = in_msg~__gen_read_TokenBurnNotification(); |
||||
self~__gen_SampleJetton_receive_TokenBurnNotification(msg); |
||||
__gen_store_SampleJetton(self); |
||||
return (); |
||||
} |
||||
|
||||
;; Text Receivers |
||||
if (op == 0) { |
||||
var text_op = slice_hash(in_msg); |
||||
|
||||
;; Receive "Mint!" message |
||||
if (text_op == 0xcd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2) { |
||||
var self = __gen_load_SampleJetton(); |
||||
self~__gen_SampleJetton_receive_comment_cd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2(); |
||||
__gen_store_SampleJetton(self); |
||||
return (); |
||||
} |
||||
} |
||||
|
||||
throw(130); |
||||
} |
||||
|
||||
cell init_SampleJetton(cell sys', slice owner, cell content) method_id { |
||||
return __gen_SampleJetton_init(sys', owner, content); |
||||
} |
||||
|
||||
_ supported_interfaces() method_id { |
||||
return ( |
||||
"org.ton.introspection.v0"H >> 128, |
||||
"org.ton.abi.ipfs.v0"H >> 128, |
||||
"org.ton.jetton.master"H >> 128, |
||||
"org.ton.ownable"H >> 128 |
||||
); |
||||
} |
||||
|
||||
_ get_abi_ipfs() { |
||||
return "ipfs://QmfEvDdmm4QFHZHyaeXmxoQzn6vUaLtdbVnjusevQcp7eA"; |
||||
} |
@ -0,0 +1,697 @@
|
||||
PROGRAM{ |
||||
DECLPROC __tact_not_null |
||||
DECLPROC __tact_context_get |
||||
DECLPROC __tact_verify_address |
||||
DECLPROC __tact_load_address |
||||
DECLPROC __tact_load_address_opt |
||||
DECLPROC __tact_store_address |
||||
DECLPROC __tact_store_address_opt |
||||
DECLPROC __tact_compute_contract_address |
||||
DECLPROC __tact_address_eq |
||||
DECLPROC __tact_dict_set_code |
||||
DECLPROC __tact_dict_get_code |
||||
DECLPROC __gen_write_TokenTransferInternal |
||||
DECLPROC __gen_writecell_TokenTransferInternal |
||||
DECLPROC __gen_read_TokenBurnNotification |
||||
DECLPROC __gen_write_TokenExcesses |
||||
DECLPROC __gen_writecell_TokenExcesses |
||||
DECLPROC __gen_read_TokenUpdateContent |
||||
DECLPROC __gen_read_Mint |
||||
DECLPROC __gen_write_JettonDefaultWallet |
||||
DECLPROC __gen_write_SampleJetton |
||||
DECLPROC __gen_read_SampleJetton |
||||
DECLPROC __gen_StateInit_get_code |
||||
DECLPROC __gen_Context_get_sender |
||||
DECLPROC __gen_load_SampleJetton |
||||
DECLPROC __gen_store_SampleJetton |
||||
DECLPROC storeBool |
||||
DECLPROC emptyCell |
||||
DECLPROC __gen_Cell_asSlice |
||||
DECLPROC emptySlice |
||||
DECLPROC contractAddress |
||||
DECLPROC send |
||||
DECLPROC __gen_JettonDefaultWallet_init |
||||
DECLPROC __gen_JettonDefaultWallet_init_child |
||||
DECLPROC __gen_SampleJetton_init |
||||
DECLPROC __gen_SampleJetton_getJettonWalletInit |
||||
DECLPROC __gen_SampleJetton_get_wallet_address |
||||
103289 DECLMETHOD __gen_get_get_wallet_address |
||||
DECLPROC __gen_SampleJetton_get_jetton_data |
||||
106029 DECLMETHOD __gen_get_get_jetton_data |
||||
DECLPROC __gen_SampleJetton_mint |
||||
DECLPROC __gen_SampleJetton_requireWallet |
||||
DECLPROC __gen_SampleJetton_requireOwner |
||||
DECLPROC __gen_SampleJetton_owner |
||||
83229 DECLMETHOD __gen_get_owner |
||||
DECLPROC __gen_SampleJetton_receive_Mint |
||||
DECLPROC __gen_SampleJetton_receive_comment_cd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2 |
||||
DECLPROC __gen_SampleJetton_receive_TokenUpdateContent |
||||
DECLPROC __gen_SampleJetton_receive_TokenBurnNotification |
||||
DECLPROC recv_internal |
||||
122307 DECLMETHOD init_SampleJetton |
||||
113617 DECLMETHOD supported_interfaces |
||||
DECLPROC get_abi_ipfs |
||||
DECLGLOBVAR __tact_context |
||||
DECLGLOBVAR __tact_context_sys |
||||
__tact_not_null PROC:<{ |
||||
DUP |
||||
ISNULL |
||||
128 THROWIF |
||||
}> |
||||
__tact_context_get PROCINLINE:<{ |
||||
__tact_context GETGLOB |
||||
4 UNTUPLE |
||||
}> |
||||
__tact_verify_address PROCINLINE:<{ |
||||
SBITS |
||||
267 PUSHINT |
||||
NEQ |
||||
134 THROWIFNOT |
||||
}> |
||||
__tact_load_address PROCINLINE:<{ |
||||
LDMSGADDR |
||||
SWAP |
||||
}> |
||||
__tact_load_address_opt PROCINLINE:<{ |
||||
LDMSGADDR |
||||
OVER |
||||
2 PLDU |
||||
0 NEQINT |
||||
IF:<{ |
||||
SWAP |
||||
}>ELSE<{ |
||||
NIP |
||||
PUSHNULL |
||||
}> |
||||
}> |
||||
__tact_store_address PROCINLINE:<{ |
||||
STSLICER |
||||
}> |
||||
__tact_store_address_opt PROCINLINE:<{ |
||||
DUP |
||||
ISNULL |
||||
IF:<{ |
||||
DROP |
||||
0 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
}>ELSE<{ |
||||
__tact_store_address INLINECALLDICT |
||||
}> |
||||
}> |
||||
__tact_compute_contract_address PROC:<{ |
||||
NEWC |
||||
0 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
3 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STU |
||||
s1 s2 XCHG |
||||
STREF |
||||
STREF |
||||
ENDC |
||||
HASHCU |
||||
NEWC |
||||
2 PUSHINT |
||||
SWAP |
||||
2 STU |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STU |
||||
s1 s2 XCHG |
||||
8 STI |
||||
256 STU |
||||
ENDC |
||||
CTOS |
||||
}> |
||||
__tact_address_eq PROCINLINE:<{ |
||||
SDEQ |
||||
}> |
||||
__tact_dict_set_code PROCINLINE:<{ |
||||
s0 s2 XCHG |
||||
16 PUSHINT |
||||
DICTUSETREF |
||||
}> |
||||
__tact_dict_get_code PROCINLINE:<{ |
||||
SWAP |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
}> |
||||
__gen_write_TokenTransferInternal PROCINLINE:<{ |
||||
395134233 PUSHINT |
||||
s0 s7 XCHG2 |
||||
32 STU |
||||
s1 s5 XCHG |
||||
64 STU |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
__tact_store_address_opt INLINECALLDICT |
||||
SWAP |
||||
STGRAMS |
||||
SWAP |
||||
STSLICER |
||||
}> |
||||
__gen_writecell_TokenTransferInternal PROCINLINE:<{ |
||||
NEWC |
||||
6 -ROLL |
||||
__gen_write_TokenTransferInternal INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_read_TokenBurnNotification PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
__tact_load_address INLINECALLDICT |
||||
SWAP |
||||
__tact_load_address_opt INLINECALLDICT |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
}> |
||||
__gen_write_TokenExcesses PROCINLINE:<{ |
||||
3576854235 PUSHINT |
||||
ROT |
||||
32 STU |
||||
64 STU |
||||
}> |
||||
__gen_writecell_TokenExcesses PROCINLINE:<{ |
||||
NEWC |
||||
SWAP |
||||
__gen_write_TokenExcesses INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_read_TokenUpdateContent PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
1862840892 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
PUSHNULL |
||||
SWAP |
||||
1 LDI |
||||
SWAP |
||||
IF:<{ |
||||
NIP |
||||
LDREF |
||||
}> |
||||
SWAP |
||||
}> |
||||
__gen_read_Mint PROCINLINE:<{ |
||||
32 LDU |
||||
SWAP |
||||
2737462367 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
257 PUSHINT |
||||
LDIX |
||||
SWAP |
||||
}> |
||||
__gen_write_JettonDefaultWallet PROCINLINE:<{ |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
}> |
||||
__gen_write_SampleJetton PROCINLINE:<{ |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
SWAP |
||||
__tact_store_address INLINECALLDICT |
||||
s2 PUSH |
||||
ISNULL |
||||
IF:<{ |
||||
s2 POP |
||||
FALSE |
||||
ROT |
||||
1 STI |
||||
}>ELSE<{ |
||||
TRUE |
||||
SWAP |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> |
||||
1 STI |
||||
}> |
||||
__gen_read_SampleJetton PROCINLINE:<{ |
||||
LDGRAMS |
||||
__tact_load_address INLINECALLDICT |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
SWAP |
||||
IF:<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
}> |
||||
__gen_StateInit_get_code PROCINLINE:<{ |
||||
DROP |
||||
}> |
||||
__gen_Context_get_sender PROCINLINE:<{ |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
}> |
||||
__gen_load_SampleJetton PROCINLINE:<{ |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
SWAP |
||||
__tact_context_sys SETGLOB |
||||
__gen_read_SampleJetton INLINECALLDICT |
||||
1 4 BLKDROP2 |
||||
}> |
||||
__gen_store_SampleJetton PROCINLINE:<{ |
||||
NEWC |
||||
__tact_context_sys GETGLOB |
||||
SWAP |
||||
STREF |
||||
4 -ROLL |
||||
__gen_write_SampleJetton INLINECALLDICT |
||||
ENDC |
||||
c4 POP |
||||
}> |
||||
storeBool PROC:<{ |
||||
IFJMP:<{ |
||||
-1 PUSHINT |
||||
SWAP |
||||
1 STI |
||||
}> |
||||
0 PUSHINT |
||||
SWAP |
||||
1 STI |
||||
}> |
||||
emptyCell PROC:<{ |
||||
NEWC |
||||
ENDC |
||||
}> |
||||
__gen_Cell_asSlice PROC:<{ |
||||
CTOS |
||||
}> |
||||
emptySlice PROC:<{ |
||||
emptyCell CALLDICT |
||||
__gen_Cell_asSlice CALLDICT |
||||
}> |
||||
contractAddress PROC:<{ |
||||
0 PUSHINT |
||||
-ROT |
||||
__tact_compute_contract_address CALLDICT |
||||
}> |
||||
send PROC:<{ |
||||
NEWC |
||||
1 PUSHINT |
||||
SWAP |
||||
2 STI |
||||
s0 s7 XCHG2 |
||||
storeBool CALLDICT |
||||
0 PUSHINT |
||||
SWAP |
||||
3 STI |
||||
s0 s5 XCHG2 |
||||
__tact_store_address INLINECALLDICT |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
0 PUSHINT |
||||
SWAP |
||||
105 STI |
||||
s3 PUSH |
||||
ISNULL |
||||
NOT |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
OR |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
NEWC |
||||
FALSE |
||||
storeBool CALLDICT |
||||
FALSE |
||||
storeBool CALLDICT |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s4 XCHG |
||||
__tact_not_null CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}>ELSE<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s4 XCHG |
||||
__tact_not_null CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}>ELSE<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
FALSE |
||||
storeBool CALLDICT |
||||
s0 s2 XCHG |
||||
TRUE |
||||
storeBool CALLDICT |
||||
s0 s2 XCHG |
||||
ENDC |
||||
ROT |
||||
STREF |
||||
}>ELSE<{ |
||||
s3 POP |
||||
s3 POP |
||||
SWAP |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
OVER |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
TRUE |
||||
storeBool CALLDICT |
||||
SWAP |
||||
__tact_not_null CALLDICT |
||||
SWAP |
||||
STREF |
||||
}>ELSE<{ |
||||
NIP |
||||
FALSE |
||||
storeBool CALLDICT |
||||
}> |
||||
ENDC |
||||
SWAP |
||||
SENDRAWMSG |
||||
}> |
||||
__gen_JettonDefaultWallet_init PROC:<{ |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s1 s3 XCHG3 |
||||
__gen_write_JettonDefaultWallet INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_JettonDefaultWallet_init_child PROC:<{ |
||||
s0 s2 XCHG |
||||
CTOS |
||||
LDDICT |
||||
DROP |
||||
DUP |
||||
55471 PUSHINT |
||||
__tact_dict_get_code INLINECALLDICT |
||||
NEWDICT |
||||
s0 s2 XCHG |
||||
55471 PUSHINT |
||||
__tact_dict_get_code INLINECALLDICT |
||||
s1 s2 XCHG |
||||
55471 PUSHINT |
||||
SWAP |
||||
__tact_dict_set_code INLINECALLDICT |
||||
NEWC |
||||
STDICT |
||||
ENDC |
||||
s0 s0 s3 XCHG3 |
||||
__gen_JettonDefaultWallet_init CALLDICT |
||||
}> |
||||
__gen_SampleJetton_init PROC:<{ |
||||
0 PUSHINT |
||||
TRUE |
||||
s0 s4 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s3 s4 XCHG3 |
||||
__gen_write_SampleJetton INLINECALLDICT |
||||
ENDC |
||||
}> |
||||
__gen_SampleJetton_getJettonWalletInit PROC:<{ |
||||
__tact_context_sys GETGLOB |
||||
MYADDR |
||||
ROT |
||||
__gen_JettonDefaultWallet_init_child CALLDICT |
||||
}> |
||||
__gen_SampleJetton_get_wallet_address PROC:<{ |
||||
__gen_SampleJetton_getJettonWalletInit CALLDICT |
||||
4 2 BLKDROP2 |
||||
contractAddress CALLDICT |
||||
}> |
||||
__gen_get_get_wallet_address PROC:<{ |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
4 ROLL |
||||
__gen_SampleJetton_get_wallet_address CALLDICT |
||||
}> |
||||
__gen_SampleJetton_get_jetton_data PROC:<{ |
||||
MYADDR |
||||
__gen_SampleJetton_getJettonWalletInit CALLDICT |
||||
__gen_StateInit_get_code INLINECALLDICT |
||||
s3 s3 s0 XCHG3 |
||||
}> |
||||
__gen_get_get_jetton_data PROC:<{ |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
__gen_SampleJetton_get_jetton_data CALLDICT |
||||
}> |
||||
__gen_SampleJetton_mint PROC:<{ |
||||
s6 s1 XCPU |
||||
ADD |
||||
4 2 BLKSWAP |
||||
__gen_SampleJetton_getJettonWalletInit CALLDICT |
||||
2DUP |
||||
contractAddress CALLDICT |
||||
FALSE |
||||
0 PUSHINT |
||||
64 PUSHINT |
||||
OVER |
||||
MYADDR |
||||
OVER |
||||
emptySlice CALLDICT |
||||
s3 s5 XCHG |
||||
s4 s14 XCHG |
||||
s2 s3 XCHG |
||||
s2 s15 XCHG |
||||
__gen_writecell_TokenTransferInternal INLINECALLDICT |
||||
s5 s6 s0 XCHG3 |
||||
s4 s10 XCHG |
||||
s3 s9 XCHG |
||||
s0 s10 s9 XCHG3 |
||||
send CALLDICT |
||||
2SWAP |
||||
}> |
||||
__gen_SampleJetton_requireWallet PROC:<{ |
||||
__tact_context_get INLINECALLDICT |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
5 -ROLL |
||||
__gen_SampleJetton_getJettonWalletInit CALLDICT |
||||
SWAP |
||||
4429 PUSHINT |
||||
s0 s2 XCHG |
||||
contractAddress CALLDICT |
||||
s0 s6 XCHG2 |
||||
__tact_address_eq INLINECALLDICT |
||||
s1 s5 XCHG |
||||
THROWANYIFNOT |
||||
3 ROLL |
||||
}> |
||||
__gen_SampleJetton_requireOwner PROC:<{ |
||||
__tact_context_get INLINECALLDICT |
||||
__gen_Context_get_sender INLINECALLDICT |
||||
s3 PUSH |
||||
__tact_address_eq INLINECALLDICT |
||||
132 THROWIFNOT |
||||
}> |
||||
__gen_SampleJetton_owner PROC:<{ |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
}> |
||||
__gen_get_owner PROC:<{ |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
__gen_SampleJetton_owner CALLDICT |
||||
}> |
||||
__gen_SampleJetton_receive_Mint PROC:<{ |
||||
__tact_context_get INLINECALLDICT |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
TUCK |
||||
__gen_SampleJetton_mint CALLDICT |
||||
}> |
||||
__gen_SampleJetton_receive_comment_cd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2 PROC:<{ |
||||
__tact_context_get INLINECALLDICT |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
1000000000 PUSHINT |
||||
OVER |
||||
__gen_SampleJetton_mint CALLDICT |
||||
}> |
||||
__gen_SampleJetton_receive_TokenUpdateContent PROC:<{ |
||||
4 -ROLL |
||||
__gen_SampleJetton_requireOwner CALLDICT |
||||
NIP |
||||
s1 s3 s0 XCHG3 |
||||
}> |
||||
__gen_SampleJetton_receive_TokenBurnNotification PROC:<{ |
||||
s4 s7 XCHG |
||||
s3 s6 XCHG |
||||
s5 s7 s7 XCHG3 |
||||
__gen_SampleJetton_requireWallet CALLDICT |
||||
s3 s4 XCHG2 |
||||
SUB |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
IF:<{ |
||||
FALSE |
||||
0 PUSHINT |
||||
66 PUSHINT |
||||
s0 s7 XCHG |
||||
__gen_writecell_TokenExcesses INLINECALLDICT |
||||
s2 s4 XCHG |
||||
s3 s8 XCHG |
||||
s1 s7 s0 XCHG3 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
send CALLDICT |
||||
s2 s3 XCHG |
||||
}>ELSE<{ |
||||
s4 POP |
||||
s4 POP |
||||
}> |
||||
s3 s0 s0 XCHG3 |
||||
}> |
||||
recv_internal PROC:<{ |
||||
SAMEALTSAVE |
||||
0 PUSHINT |
||||
OVER |
||||
SBITS |
||||
31 GTINT |
||||
IF:<{ |
||||
DROP |
||||
DUP |
||||
32 PLDU |
||||
}> |
||||
s0 s2 XCHG |
||||
CTOS |
||||
4 LDU |
||||
SWAP |
||||
1 PUSHINT |
||||
AND |
||||
1 EQINT |
||||
IF:<{ |
||||
TRUE |
||||
}>ELSE<{ |
||||
FALSE |
||||
}> |
||||
SWAP |
||||
LDMSGADDR |
||||
s2 PUSH |
||||
s6 s6 XCHG2 |
||||
4 TUPLE |
||||
__tact_context SETGLOB |
||||
s0 s2 XCHG |
||||
IFJMP:<{ |
||||
2DROP |
||||
}> |
||||
DUP |
||||
2737462367 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
s0 s4 XCHG |
||||
__gen_read_Mint INLINECALLDICT |
||||
NIP |
||||
s3 s4 XCHG |
||||
s1 s3 s0 XCHG3 |
||||
__gen_SampleJetton_receive_Mint CALLDICT |
||||
__gen_store_SampleJetton INLINECALLDICT |
||||
}> |
||||
DUP |
||||
1862840892 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
s0 s4 XCHG |
||||
__gen_read_TokenUpdateContent INLINECALLDICT |
||||
NIP |
||||
s3 s4 XCHG |
||||
s1 s3 s0 XCHG3 |
||||
__gen_SampleJetton_receive_TokenUpdateContent CALLDICT |
||||
__gen_store_SampleJetton INLINECALLDICT |
||||
}> |
||||
DUP |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
DROP |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
s0 s4 XCHG |
||||
__gen_read_TokenBurnNotification INLINECALLDICT |
||||
s4 POP |
||||
s6 s7 XCHG |
||||
s5 s6 XCHG |
||||
s4 s5 XCHG |
||||
3 ROLL |
||||
__gen_SampleJetton_receive_TokenBurnNotification CALLDICT |
||||
__gen_store_SampleJetton INLINECALLDICT |
||||
}> |
||||
0 EQINT |
||||
IF:<{ |
||||
HASHSU |
||||
92748154967237992140665580847895802782213764542359950109876145449566260965554 PUSHINT |
||||
EQUAL |
||||
IFJMP:<{ |
||||
__gen_load_SampleJetton INLINECALLDICT |
||||
__gen_SampleJetton_receive_comment_cd0d986cb1a2f468ae7089f4fc3162c116e5f53fbd11a6839f52dbf5040830b2 CALLDICT |
||||
__gen_store_SampleJetton INLINECALLDICT |
||||
RETALT |
||||
}> |
||||
}>ELSE<{ |
||||
DROP |
||||
}> |
||||
130 THROW |
||||
}> |
||||
init_SampleJetton PROC:<{ |
||||
__gen_SampleJetton_init CALLDICT |
||||
}> |
||||
supported_interfaces PROC:<{ |
||||
123515602279859691144772641439386770278 PUSHINT |
||||
209801025412363888721030803524359905849 PUSHINT |
||||
258390863389042349688353801369539695109 PUSHINT |
||||
86142586315491086060343270784266291122 PUSHINT |
||||
}> |
||||
get_abi_ipfs PROC:<{ |
||||
x{697066733a2f2f516d66457644646d6d345146485a48796165586d786f517a6e367655614c746462566e6a75736576516370376541} PUSHSLICE |
||||
}> |
||||
}END>c |
@ -0,0 +1,831 @@
|
||||
SETCP0 |
||||
(:methods |
||||
recv_internal: |
||||
SAMEALTSAVE |
||||
0 PUSHINT |
||||
s1 PUSH |
||||
SBITS |
||||
31 GTINT |
||||
<{ |
||||
s0 POP |
||||
s0 PUSH |
||||
32 PLDU |
||||
}> PUSHCONT |
||||
IF |
||||
s0 s2 XCHG |
||||
CTOS |
||||
4 LDU |
||||
s0 s1 XCHG |
||||
1 PUSHINT |
||||
AND |
||||
1 EQINT |
||||
<{ |
||||
-1 PUSHINT |
||||
}> PUSHCONT |
||||
<{ |
||||
0 PUSHINT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s2 PUSH |
||||
s6 s6 XCHG2 |
||||
4 TUPLE |
||||
1 SETGLOBVAR |
||||
s0 s2 XCHG |
||||
<{ |
||||
2DROP |
||||
}> PUSHCONT |
||||
IFJMP |
||||
s0 PUSH |
||||
2737462367 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
s0 s4 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
2737462367 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
257 PUSHINT |
||||
LDI |
||||
s0 s1 XCHG |
||||
s1 POP |
||||
s3 s4 XCHG |
||||
s1 s3 s0 XCHG3 |
||||
42 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
4 1 BLKSWAP |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s2 PUSH |
||||
ISNULL |
||||
<{ |
||||
s2 POP |
||||
0 PUSHINT |
||||
ROT |
||||
1 STI |
||||
}> PUSHCONT |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
IFELSE |
||||
1 STI |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
s0 PUSH |
||||
1862840892 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
s0 s4 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
1862840892 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
PUSHNULL |
||||
s0 s1 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
s1 POP |
||||
LDREF |
||||
}> PUSHCONT |
||||
IF |
||||
s0 s1 XCHG |
||||
s1 POP |
||||
s3 s4 XCHG |
||||
s1 s3 s0 XCHG3 |
||||
44 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
4 1 BLKSWAP |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s2 PUSH |
||||
ISNULL |
||||
<{ |
||||
s2 POP |
||||
0 PUSHINT |
||||
ROT |
||||
1 STI |
||||
}> PUSHCONT |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
IFELSE |
||||
1 STI |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
s0 PUSH |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
s0 POP |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
s0 s4 XCHG |
||||
32 LDU |
||||
s0 s1 XCHG |
||||
2078119902 PUSHINT |
||||
EQUAL |
||||
129 THROWIFNOT |
||||
64 LDU |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
s0 s1 XCHG |
||||
LDMSGADDR |
||||
s1 PUSH |
||||
2 PLDU |
||||
0 NEQINT |
||||
<{ |
||||
s0 s1 XCHG |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
PUSHNULL |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s1 s4 XCHG |
||||
s3 s3 s0 XCHG3 |
||||
s4 POP |
||||
s6 s7 XCHG |
||||
s5 s6 XCHG |
||||
s4 s5 XCHG |
||||
1 3 BLKSWAP |
||||
45 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
4 1 BLKSWAP |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s2 PUSH |
||||
ISNULL |
||||
<{ |
||||
s2 POP |
||||
0 PUSHINT |
||||
ROT |
||||
1 STI |
||||
}> PUSHCONT |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
IFELSE |
||||
1 STI |
||||
ENDC |
||||
c4 POP |
||||
}> IFJMPREF |
||||
0 EQINT |
||||
<{ |
||||
HASHSU |
||||
92748154967237992140665580847895802782213764542359950109876145449566260965554 PUSHINT |
||||
EQUAL |
||||
<{ |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
43 CALLDICT |
||||
NEWC |
||||
2 GETGLOBVAR |
||||
s0 s1 XCHG |
||||
STREF |
||||
4 1 BLKSWAP |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s2 PUSH |
||||
ISNULL |
||||
<{ |
||||
s2 POP |
||||
0 PUSHINT |
||||
ROT |
||||
1 STI |
||||
}> PUSHCONT |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
IFELSE |
||||
1 STI |
||||
ENDC |
||||
c4 POP |
||||
RETALT |
||||
}> PUSHCONT |
||||
IFJMP |
||||
}> PUSHCONT |
||||
<{ |
||||
s0 POP |
||||
}> PUSHCONT |
||||
IFELSE |
||||
130 THROW |
||||
|
||||
1: |
||||
s0 PUSH |
||||
ISNULL |
||||
128 THROWIF |
||||
|
||||
8: |
||||
NEWC |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
3 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STU |
||||
s1 s2 XCHG |
||||
STREF |
||||
STREF |
||||
ENDC |
||||
HASHCU |
||||
NEWC |
||||
2 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STU |
||||
s1 s2 XCHG |
||||
8 STI |
||||
256 STU |
||||
ENDC |
||||
CTOS |
||||
|
||||
26: |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
}> PUSHCONT |
||||
IFJMP |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
|
||||
27: |
||||
NEWC |
||||
ENDC |
||||
|
||||
28: |
||||
CTOS |
||||
|
||||
29: |
||||
27 CALLDICT |
||||
28 CALLDICT |
||||
|
||||
30: |
||||
0 PUSHINT |
||||
ROTREV |
||||
8 CALLDICT |
||||
|
||||
31: |
||||
NEWC |
||||
1 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STI |
||||
s0 s7 XCHG2 |
||||
26 CALLDICT |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
3 STI |
||||
s0 s5 XCHG2 |
||||
STSLICER |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
105 STI |
||||
s3 PUSH |
||||
ISNULL |
||||
NOT |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
OR |
||||
<{ |
||||
-1 PUSHINT |
||||
26 CALLDICT |
||||
NEWC |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
26 CALLDICT |
||||
s0 s4 XCHG |
||||
1 CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s4 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
26 CALLDICT |
||||
s0 s4 XCHG |
||||
1 CALLDICT |
||||
s0 s4 XCHG2 |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 POP |
||||
s0 s3 XCHG |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
s0 s2 XCHG |
||||
-1 PUSHINT |
||||
26 CALLDICT |
||||
s0 s2 XCHG |
||||
ENDC |
||||
ROT |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s3 POP |
||||
s3 POP |
||||
s0 s1 XCHG |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s1 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
-1 PUSHINT |
||||
26 CALLDICT |
||||
s0 s1 XCHG |
||||
1 CALLDICT |
||||
s0 s1 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
<{ |
||||
s1 POP |
||||
0 PUSHINT |
||||
26 CALLDICT |
||||
}> PUSHCONT |
||||
IFELSE |
||||
ENDC |
||||
s0 s1 XCHG |
||||
SENDRAWMSG |
||||
|
||||
32: |
||||
0 PUSHINT |
||||
s0 s3 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s1 s3 XCHG3 |
||||
s2 s3 XCHG2 |
||||
257 PUSHINT |
||||
STIX |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
|
||||
33: |
||||
s0 s2 XCHG |
||||
CTOS |
||||
LDDICT |
||||
s0 POP |
||||
s0 PUSH |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
16 PUSHINT |
||||
DICTUGETREF |
||||
NULLSWAPIFNOT |
||||
100 THROWIFNOT |
||||
s1 s2 XCHG |
||||
55471 PUSHINT |
||||
s0 s1 XCHG |
||||
s0 s2 XCHG |
||||
16 PUSHINT |
||||
DICTUSETREF |
||||
NEWC |
||||
STDICT |
||||
ENDC |
||||
s0 s0 s3 XCHG3 |
||||
32 CALLDICT |
||||
|
||||
34: |
||||
0 PUSHINT |
||||
-1 PUSHINT |
||||
s0 s4 XCHG |
||||
NEWC |
||||
STREF |
||||
s3 s3 s4 XCHG3 |
||||
s4 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s2 PUSH |
||||
ISNULL |
||||
<{ |
||||
s2 POP |
||||
0 PUSHINT |
||||
ROT |
||||
1 STI |
||||
}> PUSHCONT |
||||
<{ |
||||
-1 PUSHINT |
||||
s0 s1 XCHG |
||||
1 STI |
||||
s1 s2 XCHG |
||||
STREF |
||||
}> PUSHCONT |
||||
IFELSE |
||||
1 STI |
||||
ENDC |
||||
|
||||
35: |
||||
2 GETGLOBVAR |
||||
MYADDR |
||||
ROT |
||||
33 CALLDICT |
||||
|
||||
36: |
||||
35 CALLDICT |
||||
4 2 BLKDROP2 |
||||
30 CALLDICT |
||||
|
||||
37: |
||||
MYADDR |
||||
35 CALLDICT |
||||
s0 POP |
||||
s3 s3 s0 XCHG3 |
||||
|
||||
38: |
||||
s6 s1 XCPU |
||||
ADD |
||||
4 2 BLKSWAP |
||||
35 CALLDICT |
||||
2DUP |
||||
30 CALLDICT |
||||
0 PUSHINT |
||||
0 PUSHINT |
||||
64 PUSHINT |
||||
s1 PUSH |
||||
MYADDR |
||||
s1 PUSH |
||||
29 CALLDICT |
||||
s3 s5 XCHG |
||||
s4 s14 XCHG |
||||
s2 s3 XCHG |
||||
s2 s15 XCHG |
||||
NEWC |
||||
6 1 BLKSWAP |
||||
395134233 PUSHINT |
||||
s0 s7 XCHG2 |
||||
32 STU |
||||
s1 s5 XCHG |
||||
64 STU |
||||
s0 s3 XCHG2 |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
s0 s1 XCHG |
||||
s0 PUSH |
||||
ISNULL |
||||
<{ |
||||
s0 POP |
||||
0 PUSHINT |
||||
s0 s1 XCHG |
||||
2 STU |
||||
}> PUSHCONT |
||||
<{ |
||||
STSLICER |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s0 s1 XCHG |
||||
STGRAMS |
||||
s0 s1 XCHG |
||||
STSLICER |
||||
ENDC |
||||
s5 s6 s0 XCHG3 |
||||
s4 s10 XCHG |
||||
s3 s9 XCHG |
||||
s0 s10 s9 XCHG3 |
||||
31 CALLDICT |
||||
2SWAP |
||||
|
||||
39: |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
5 1 BLKSWAP |
||||
35 CALLDICT |
||||
s0 s1 XCHG |
||||
4429 PUSHINT |
||||
s0 s2 XCHG |
||||
30 CALLDICT |
||||
s0 s6 XCHG2 |
||||
SDEQ |
||||
s1 s5 XCHG |
||||
THROWANYIFNOT |
||||
1 3 BLKSWAP |
||||
|
||||
40: |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
s3 PUSH |
||||
SDEQ |
||||
132 THROWIFNOT |
||||
|
||||
41: |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
|
||||
42: |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
TUCK |
||||
38 CALLDICT |
||||
|
||||
43: |
||||
1 GETGLOBVAR |
||||
4 UNTUPLE |
||||
s2 s3 XCHG |
||||
3 BLKDROP |
||||
1000000000 PUSHINT |
||||
s1 PUSH |
||||
38 CALLDICT |
||||
|
||||
44: |
||||
4 1 BLKSWAP |
||||
40 CALLDICT |
||||
s1 POP |
||||
s1 s3 s0 XCHG3 |
||||
|
||||
45: |
||||
s4 s7 XCHG |
||||
s3 s6 XCHG |
||||
s5 s7 s7 XCHG3 |
||||
39 CALLDICT |
||||
s3 s4 XCHG2 |
||||
SUB |
||||
s5 PUSH |
||||
ISNULL |
||||
NOT |
||||
<{ |
||||
0 PUSHINT |
||||
0 PUSHINT |
||||
66 PUSHINT |
||||
s0 s7 XCHG |
||||
NEWC |
||||
s0 s1 XCHG |
||||
3576854235 PUSHINT |
||||
ROT |
||||
32 STU |
||||
64 STU |
||||
ENDC |
||||
s2 s4 XCHG |
||||
s3 s8 XCHG |
||||
s1 s7 s0 XCHG3 |
||||
PUSHNULL |
||||
PUSHNULL |
||||
31 CALLDICT |
||||
s2 s3 XCHG |
||||
}> PUSHCONT |
||||
<{ |
||||
s4 POP |
||||
s4 POP |
||||
}> PUSHCONT |
||||
IFELSE |
||||
s3 s0 s0 XCHG3 |
||||
|
||||
owner: |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
41 CALLDICT |
||||
|
||||
get_wallet_address: |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
1 4 BLKSWAP |
||||
36 CALLDICT |
||||
|
||||
get_jetton_data: |
||||
c4 PUSH |
||||
CTOS |
||||
LDREF |
||||
s0 s1 XCHG |
||||
2 SETGLOBVAR |
||||
LDGRAMS |
||||
LDMSGADDR |
||||
s0 s1 XCHG |
||||
PUSHNULL |
||||
s0 s2 XCHG |
||||
1 LDI |
||||
s0 s1 XCHG |
||||
<{ |
||||
1 2 BLKDROP2 |
||||
LDREF |
||||
s1 s2 XCHG |
||||
}> PUSHCONT |
||||
IF |
||||
1 LDI |
||||
s0 s4 XCHG |
||||
s3 s3 XCHG2 |
||||
1 4 BLKDROP2 |
||||
37 CALLDICT |
||||
|
||||
113617: |
||||
123515602279859691144772641439386770278 PUSHINT |
||||
209801025412363888721030803524359905849 PUSHINT |
||||
258390863389042349688353801369539695109 PUSHINT |
||||
86142586315491086060343270784266291122 PUSHINT |
||||
|
||||
122307: |
||||
34 CALLDICT |
||||
) 19 DICTPUSHCONST |
||||
DICTIGETJMPZ |
||||
11 THROWARG |
@ -0,0 +1,890 @@
|
||||
import { Cell, Slice, StackItem, Address, Builder, InternalMessage, CommonMessageInfo, CellMessage, beginCell, serializeDict, TupleSlice4, readString, stringToCell } from 'ton'; |
||||
import { ContractExecutor, createExecutorFromCode, ExecuteError } from 'ton-nodejs'; |
||||
import BN from 'bn.js'; |
||||
|
||||
export type StateInit = { |
||||
$$type: 'StateInit'; |
||||
code: Cell; |
||||
data: Cell; |
||||
} |
||||
|
||||
export function packStateInit(src: StateInit): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeRef(src.code); |
||||
b_0 = b_0.storeRef(src.data); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackStateInit(src: StateInit, __stack: StackItem[]) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} |
||||
|
||||
export function packTupleStateInit(src: StateInit): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackStateInit(slice: TupleSlice4): StateInit { |
||||
const code = slice.readCell(); |
||||
const data = slice.readCell(); |
||||
return { $$type: 'StateInit', code: code, data: data }; |
||||
} |
||||
export function unpackTupleStateInit(slice: TupleSlice4): StateInit { |
||||
const code = slice.readCell(); |
||||
const data = slice.readCell(); |
||||
return { $$type: 'StateInit', code: code, data: data }; |
||||
} |
||||
export type Context = { |
||||
$$type: 'Context'; |
||||
bounced: boolean; |
||||
sender: Address; |
||||
value: BN; |
||||
raw: Cell; |
||||
} |
||||
|
||||
export function packContext(src: Context): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeBit(src.bounced); |
||||
b_0 = b_0.storeAddress(src.sender); |
||||
b_0 = b_0.storeInt(src.value, 257); |
||||
b_0 = b_0.storeRef(src.raw); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackContext(src: Context, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.bounced ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.sender).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'slice', cell: src.raw }); |
||||
} |
||||
|
||||
export function packTupleContext(src: Context): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.bounced ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.sender).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'slice', cell: src.raw }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackContext(slice: TupleSlice4): Context { |
||||
const bounced = slice.readBoolean(); |
||||
const sender = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const raw = slice.readCell(); |
||||
return { $$type: 'Context', bounced: bounced, sender: sender, value: value, raw: raw }; |
||||
} |
||||
export function unpackTupleContext(slice: TupleSlice4): Context { |
||||
const bounced = slice.readBoolean(); |
||||
const sender = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const raw = slice.readCell(); |
||||
return { $$type: 'Context', bounced: bounced, sender: sender, value: value, raw: raw }; |
||||
} |
||||
export type SendParameters = { |
||||
$$type: 'SendParameters'; |
||||
bounce: boolean; |
||||
to: Address; |
||||
value: BN; |
||||
mode: BN; |
||||
body: Cell | null; |
||||
code: Cell | null; |
||||
data: Cell | null; |
||||
} |
||||
|
||||
export function packSendParameters(src: SendParameters): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeBit(src.bounce); |
||||
b_0 = b_0.storeAddress(src.to); |
||||
b_0 = b_0.storeInt(src.value, 257); |
||||
b_0 = b_0.storeInt(src.mode, 257); |
||||
if (src.body !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.body); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
if (src.code !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.code); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
if (src.data !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.data); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackSendParameters(src: SendParameters, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.bounce ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.to).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'int', value: src.mode }); |
||||
if (src.body !== null) { |
||||
__stack.push({ type: 'cell', cell: src.body }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.code !== null) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.data !== null) { |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleSendParameters(src: SendParameters): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.bounce ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.to).endCell() }); |
||||
__stack.push({ type: 'int', value: src.value }); |
||||
__stack.push({ type: 'int', value: src.mode }); |
||||
if (src.body !== null) { |
||||
__stack.push({ type: 'cell', cell: src.body }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.code !== null) { |
||||
__stack.push({ type: 'cell', cell: src.code }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.data !== null) { |
||||
__stack.push({ type: 'cell', cell: src.data }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackSendParameters(slice: TupleSlice4): SendParameters { |
||||
const bounce = slice.readBoolean(); |
||||
const to = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const mode = slice.readBigNumber(); |
||||
const body = slice.readCellOpt(); |
||||
const code = slice.readCellOpt(); |
||||
const data = slice.readCellOpt(); |
||||
return { $$type: 'SendParameters', bounce: bounce, to: to, value: value, mode: mode, body: body, code: code, data: data }; |
||||
} |
||||
export function unpackTupleSendParameters(slice: TupleSlice4): SendParameters { |
||||
const bounce = slice.readBoolean(); |
||||
const to = slice.readAddress(); |
||||
const value = slice.readBigNumber(); |
||||
const mode = slice.readBigNumber(); |
||||
const body = slice.readCellOpt(); |
||||
const code = slice.readCellOpt(); |
||||
const data = slice.readCellOpt(); |
||||
return { $$type: 'SendParameters', bounce: bounce, to: to, value: value, mode: mode, body: body, code: code, data: data }; |
||||
} |
||||
export type ChangeOwner = { |
||||
$$type: 'ChangeOwner'; |
||||
newOwner: Address; |
||||
} |
||||
|
||||
export function packChangeOwner(src: ChangeOwner): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(3067051791, 32); |
||||
b_0 = b_0.storeAddress(src.newOwner); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackChangeOwner(src: ChangeOwner, __stack: StackItem[]) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.newOwner).endCell() }); |
||||
} |
||||
|
||||
export function packTupleChangeOwner(src: ChangeOwner): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.newOwner).endCell() }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackChangeOwner(slice: TupleSlice4): ChangeOwner { |
||||
const newOwner = slice.readAddress(); |
||||
return { $$type: 'ChangeOwner', newOwner: newOwner }; |
||||
} |
||||
export function unpackTupleChangeOwner(slice: TupleSlice4): ChangeOwner { |
||||
const newOwner = slice.readAddress(); |
||||
return { $$type: 'ChangeOwner', newOwner: newOwner }; |
||||
} |
||||
export type TokenTransfer = { |
||||
$$type: 'TokenTransfer'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
destination: Address; |
||||
responseDestination: Address | null; |
||||
customPayload: Cell | null; |
||||
forwardTonAmount: BN; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenTransfer(src: TokenTransfer): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(260734629, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.destination); |
||||
b_0 = b_0.storeAddress(src.responseDestination); |
||||
if (src.customPayload !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.customPayload); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
b_0 = b_0.storeCoins(src.forwardTonAmount); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenTransfer(src: TokenTransfer, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.destination).endCell() }); |
||||
if (src.responseDestination !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseDestination).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.customPayload !== null) { |
||||
__stack.push({ type: 'cell', cell: src.customPayload }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenTransfer(src: TokenTransfer): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.destination).endCell() }); |
||||
if (src.responseDestination !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseDestination).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
if (src.customPayload !== null) { |
||||
__stack.push({ type: 'cell', cell: src.customPayload }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenTransfer(slice: TupleSlice4): TokenTransfer { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const destination = slice.readAddress(); |
||||
const responseDestination = slice.readAddressOpt(); |
||||
const customPayload = slice.readCellOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransfer', queryId: queryId, amount: amount, destination: destination, responseDestination: responseDestination, customPayload: customPayload, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenTransfer(slice: TupleSlice4): TokenTransfer { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const destination = slice.readAddress(); |
||||
const responseDestination = slice.readAddressOpt(); |
||||
const customPayload = slice.readCellOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransfer', queryId: queryId, amount: amount, destination: destination, responseDestination: responseDestination, customPayload: customPayload, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenTransferInternal = { |
||||
$$type: 'TokenTransferInternal'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
from: Address; |
||||
responseAddress: Address | null; |
||||
forwardTonAmount: BN; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenTransferInternal(src: TokenTransferInternal): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(395134233, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.from); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
b_0 = b_0.storeCoins(src.forwardTonAmount); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenTransferInternal(src: TokenTransferInternal, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenTransferInternal(src: TokenTransferInternal): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'int', value: src.forwardTonAmount }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenTransferInternal(slice: TupleSlice4): TokenTransferInternal { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransferInternal', queryId: queryId, amount: amount, from: from, responseAddress: responseAddress, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenTransferInternal(slice: TupleSlice4): TokenTransferInternal { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
const forwardTonAmount = slice.readBigNumber(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenTransferInternal', queryId: queryId, amount: amount, from: from, responseAddress: responseAddress, forwardTonAmount: forwardTonAmount, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenNotification = { |
||||
$$type: 'TokenNotification'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
from: Address; |
||||
forwardPayload: Cell; |
||||
} |
||||
|
||||
export function packTokenNotification(src: TokenNotification): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1935855772, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.from); |
||||
b_0 = b_0.storeCellCopy(src.forwardPayload); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenNotification(src: TokenNotification, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
} |
||||
|
||||
export function packTupleTokenNotification(src: TokenNotification): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.from).endCell() }); |
||||
__stack.push({ type: 'slice', cell: src.forwardPayload }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenNotification(slice: TupleSlice4): TokenNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenNotification', queryId: queryId, amount: amount, from: from, forwardPayload: forwardPayload }; |
||||
} |
||||
export function unpackTupleTokenNotification(slice: TupleSlice4): TokenNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const from = slice.readAddress(); |
||||
const forwardPayload = slice.readCell(); |
||||
return { $$type: 'TokenNotification', queryId: queryId, amount: amount, from: from, forwardPayload: forwardPayload }; |
||||
} |
||||
export type TokenBurn = { |
||||
$$type: 'TokenBurn'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
owner: Address; |
||||
responseAddress: Address | null; |
||||
} |
||||
|
||||
export function packTokenBurn(src: TokenBurn): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1499400124, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenBurn(src: TokenBurn, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenBurn(src: TokenBurn): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenBurn(slice: TupleSlice4): TokenBurn { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurn', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export function unpackTupleTokenBurn(slice: TupleSlice4): TokenBurn { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurn', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export type TokenBurnNotification = { |
||||
$$type: 'TokenBurnNotification'; |
||||
queryId: BN; |
||||
amount: BN; |
||||
owner: Address; |
||||
responseAddress: Address | null; |
||||
} |
||||
|
||||
export function packTokenBurnNotification(src: TokenBurnNotification): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(2078119902, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
b_0 = b_0.storeCoins(src.amount); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.responseAddress); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenBurnNotification(src: TokenBurnNotification, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenBurnNotification(src: TokenBurnNotification): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.responseAddress !== null) { |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.responseAddress).endCell() }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenBurnNotification(slice: TupleSlice4): TokenBurnNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurnNotification', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export function unpackTupleTokenBurnNotification(slice: TupleSlice4): TokenBurnNotification { |
||||
const queryId = slice.readBigNumber(); |
||||
const amount = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const responseAddress = slice.readAddressOpt(); |
||||
return { $$type: 'TokenBurnNotification', queryId: queryId, amount: amount, owner: owner, responseAddress: responseAddress }; |
||||
} |
||||
export type TokenExcesses = { |
||||
$$type: 'TokenExcesses'; |
||||
queryId: BN; |
||||
} |
||||
|
||||
export function packTokenExcesses(src: TokenExcesses): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(3576854235, 32); |
||||
b_0 = b_0.storeUint(src.queryId, 64); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenExcesses(src: TokenExcesses, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
} |
||||
|
||||
export function packTupleTokenExcesses(src: TokenExcesses): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.queryId }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenExcesses(slice: TupleSlice4): TokenExcesses { |
||||
const queryId = slice.readBigNumber(); |
||||
return { $$type: 'TokenExcesses', queryId: queryId }; |
||||
} |
||||
export function unpackTupleTokenExcesses(slice: TupleSlice4): TokenExcesses { |
||||
const queryId = slice.readBigNumber(); |
||||
return { $$type: 'TokenExcesses', queryId: queryId }; |
||||
} |
||||
export type TokenUpdateContent = { |
||||
$$type: 'TokenUpdateContent'; |
||||
content: Cell | null; |
||||
} |
||||
|
||||
export function packTokenUpdateContent(src: TokenUpdateContent): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(1862840892, 32); |
||||
if (src.content !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.content); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackTokenUpdateContent(src: TokenUpdateContent, __stack: StackItem[]) { |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
} |
||||
|
||||
export function packTupleTokenUpdateContent(src: TokenUpdateContent): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackTokenUpdateContent(slice: TupleSlice4): TokenUpdateContent { |
||||
const content = slice.readCellOpt(); |
||||
return { $$type: 'TokenUpdateContent', content: content }; |
||||
} |
||||
export function unpackTupleTokenUpdateContent(slice: TupleSlice4): TokenUpdateContent { |
||||
const content = slice.readCellOpt(); |
||||
return { $$type: 'TokenUpdateContent', content: content }; |
||||
} |
||||
export type JettonData = { |
||||
$$type: 'JettonData'; |
||||
totalSupply: BN; |
||||
mintable: boolean; |
||||
owner: Address; |
||||
content: Cell | null; |
||||
walletCode: Cell; |
||||
} |
||||
|
||||
export function packJettonData(src: JettonData): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeInt(src.totalSupply, 257); |
||||
b_0 = b_0.storeBit(src.mintable); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
if (src.content !== null) { |
||||
b_0 = b_0.storeBit(true); |
||||
b_0 = b_0.storeRef(src.content); |
||||
} else { |
||||
b_0 = b_0.storeBit(false); |
||||
} |
||||
b_0 = b_0.storeRef(src.walletCode); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackJettonData(src: JettonData, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.totalSupply }); |
||||
__stack.push({ type: 'int', value: src.mintable ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
} |
||||
|
||||
export function packTupleJettonData(src: JettonData): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.totalSupply }); |
||||
__stack.push({ type: 'int', value: src.mintable ? new BN(-1) : new BN(0) }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
if (src.content !== null) { |
||||
__stack.push({ type: 'cell', cell: src.content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackJettonData(slice: TupleSlice4): JettonData { |
||||
const totalSupply = slice.readBigNumber(); |
||||
const mintable = slice.readBoolean(); |
||||
const owner = slice.readAddress(); |
||||
const content = slice.readCellOpt(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonData', totalSupply: totalSupply, mintable: mintable, owner: owner, content: content, walletCode: walletCode }; |
||||
} |
||||
export function unpackTupleJettonData(slice: TupleSlice4): JettonData { |
||||
const totalSupply = slice.readBigNumber(); |
||||
const mintable = slice.readBoolean(); |
||||
const owner = slice.readAddress(); |
||||
const content = slice.readCellOpt(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonData', totalSupply: totalSupply, mintable: mintable, owner: owner, content: content, walletCode: walletCode }; |
||||
} |
||||
export type JettonWalletData = { |
||||
$$type: 'JettonWalletData'; |
||||
balance: BN; |
||||
owner: Address; |
||||
master: Address; |
||||
walletCode: Cell; |
||||
} |
||||
|
||||
export function packJettonWalletData(src: JettonWalletData): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeInt(src.balance, 257); |
||||
b_0 = b_0.storeAddress(src.owner); |
||||
b_0 = b_0.storeAddress(src.master); |
||||
b_0 = b_0.storeRef(src.walletCode); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackJettonWalletData(src: JettonWalletData, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.balance }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.master).endCell() }); |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
} |
||||
|
||||
export function packTupleJettonWalletData(src: JettonWalletData): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.balance }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.owner).endCell() }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(src.master).endCell() }); |
||||
__stack.push({ type: 'cell', cell: src.walletCode }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackJettonWalletData(slice: TupleSlice4): JettonWalletData { |
||||
const balance = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const master = slice.readAddress(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonWalletData', balance: balance, owner: owner, master: master, walletCode: walletCode }; |
||||
} |
||||
export function unpackTupleJettonWalletData(slice: TupleSlice4): JettonWalletData { |
||||
const balance = slice.readBigNumber(); |
||||
const owner = slice.readAddress(); |
||||
const master = slice.readAddress(); |
||||
const walletCode = slice.readCell(); |
||||
return { $$type: 'JettonWalletData', balance: balance, owner: owner, master: master, walletCode: walletCode }; |
||||
} |
||||
export type Mint = { |
||||
$$type: 'Mint'; |
||||
amount: BN; |
||||
} |
||||
|
||||
export function packMint(src: Mint): Cell { |
||||
let b_0 = new Builder(); |
||||
b_0 = b_0.storeUint(2737462367, 32); |
||||
b_0 = b_0.storeInt(src.amount, 257); |
||||
return b_0.endCell(); |
||||
} |
||||
|
||||
export function packStackMint(src: Mint, __stack: StackItem[]) { |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
} |
||||
|
||||
export function packTupleMint(src: Mint): StackItem[] { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'int', value: src.amount }); |
||||
return __stack; |
||||
} |
||||
|
||||
export function unpackStackMint(slice: TupleSlice4): Mint { |
||||
const amount = slice.readBigNumber(); |
||||
return { $$type: 'Mint', amount: amount }; |
||||
} |
||||
export function unpackTupleMint(slice: TupleSlice4): Mint { |
||||
const amount = slice.readBigNumber(); |
||||
return { $$type: 'Mint', amount: amount }; |
||||
} |
||||
export async function SampleJetton_init(owner: Address, content: Cell | null) { |
||||
const __code = 'te6ccgECPQEABbEAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASA1NgIBIAYHAgFIGxwCASAICQIBWBARAgHUCgsAR95DgA5YC5gOWAuADlgAlmZmT8gGQ5AOWAuADlgAllA+X/5OhASXO37cCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKRW+AgghCjKlxfuuMCIIIQbwiyPLrjAiCCEHvdl9664wLAAIAwNDg8ACwgbvLQgIAC6MO1E0NQB+GL6APpAAW0C0gABlGwS1BLe0gAEUDNsFATTHwGCEKMqXF+68uCBgQEB1wABMRA0QTDwKsj4QgHMVTBQQ/oCAc8WIm6VMnBYygCWfwHKABLM4soAye1UAMIw7UTQ1AH4YvoA+kABbQLSAAGUbBLUEt7SAARQM2wUBNMfAYIQbwiyPLry4IFtAdIAAZIx1N4BMRA0QTDwLMj4QgHMVTBQQ/oCAc8WIm6VMnBYygCWfwHKABLM4soAye1UAOgw7UTQ1AH4YvoA+kABbQLSAAGUbBLUEt7SAARQM2wUBNMfAYIQe92X3rry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwNBBnEFYQRVUC8C3I+EIBzFUwUEP6AgHPFiJulTJwWMoAln8BygASzOLKAMntVADqjm35AYLwzQ2YbLGi9GiucIn0/DFiwRbl9T+9EaaDn1Lb9QQIMLK6jkXtRNDUAfhi+gD6QAFtAtIAAZRsEtQS3tIABFAzbBTwK8j4QgHMVTBQQ/oCAc8WIm6VMnBYygCWfwHKABLM4soAye1U2zHgkTDi8sCCAgFYEhMCASAUFQAVJR/AcoA4HABygCAABTIyYAIBIBYXAgEgGBkAAzQgAAk8BvwHIAAJHBZ8AiAB9zIcQHKAVAH8BpwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY49f/AayHDwGnDwGiRus5l/8BoE8AFQBMyVNANw8BriJG6zmX/wGgTwAVAEzJU0A3DwGuJw8BoCf/AaAslYzJYzMwFw8BriIW6zmH/wGgHwAQHMlDFw8BriyQGAaAAT7AAIBIB0eAgEgKywCASAfIAIBICUmAgEgISICASAjJAApHADyMxDE1AjgQEBzwABzxYBzxbJgAG8AtD0BDAgggDYrwGAEPQPb6Hy4GRtAoIA2K8BgBD0D2+h8uBkEoIA2K8BAoAQ9BfI9ADJQAPwIIABDHB/BMjMQzRQQ/oCAc8WIm6VMnBYygCWfwHKABLM4soAyYAAPPhC+ChY8CGACASAnKAIBICkqAA08CNsQvAegAA8+CjwIzBDMIAClFFhoFUx8CNc8B5wcIBAIfgoIfAdEDUQThAjEC/IVVCCEBeNRRlQB8sfFcs/UAP6AgHPFgEgbpUwcAHLAZLPFuIB+gIBzxbJRWAQShA5QKnwH1qAAOT4QW8kECNfA1VA8CMBgRFNAvAeUAbHBRXy9FUCgAgEgLS4CAUgzNAIBIC8wAgEgMTIAHT4QW8kECNfAyPHBfLghIAAJBAjXwOAAFz4QW8kECNfA2bwJoAAjPhBbyQQI18DghA7msoAIfAmgAA8VTDwKDFBMIABrBBHEDZFd/AnUDShJW6zjh9wcIBCB8gBghDVMnbbWMsfyz/JECQQOEFwbW3wHxAjkjQ04kMAgAEW+KO9qJoagD8MX0AfSAAtoFpAADKNglqCW9pAAIoGbYKeBTAIBIDc4AgEgOToACbncPwIoAgFYOzwAlbd6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4YTIikya+3yRcvbDO06rpAsE4IGc6tPOK/OkoWA6wtxMj2UABJrbz2omhqAPwxfQB9IAC2gWkAAMo2CWoJb2kAAigZtgoqgfgSQABFrxb2omhqAPwxfQB9IAC2gWkAAMo2CWoJb2kAAigZtgp4EsA='; |
||||
const depends = new Map<string, Cell>(); |
||||
depends.set('55471', Cell.fromBoc(Buffer.from('te6ccgECKQEABYcAART/APSkE/S88sgLAQIBYgIDAgLKBAUCASAlJgIBIAYHAgFIEhMCASAICQIB7hARAgFICgsAR7OQ4AOWAuYDlgLgA5YAJZmZk/IBkOQDlgLgA5YAJZQPl/+ToQT1RwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo4zMO1E0NQB+GKBAQHXAPpAAQH6QAFDMGwTVQLwKMj4QgHMVSBQI4EBAc8AAc8WAc8Wye1U4CCCEA+KfqW64wIgghAXjUUZuuMCghBZXwe8uuMCMIDA0ODwALQgbvLQgIAN4w7UTQ1AH4YoEBAdcA+kABAfpAAUMwbBMD0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeJtAtIAAZRsEtQS3voAUWYWFURANxCJEHhVBfAlyPhCAcxVIFAjgQEBzwABzxYBzxbJ7VQAyjDtRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6AFFVFRRDMDYQeBBnVQTwJsj4QgHMVSBQI4EBAc8AAc8WAc8Wye1UALztRNDUAfhigQEB1wD6QAEB+kABQzBsEwPTHwGCEFlfB7y68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4hRDMDQQVhBFVQLwJ8j4QgHMVSBQI4EBAc8AAc8WAc8Wye1UAAbywIIAFSUfwHKAOBwAcoAgAAkcFnwCYAIBIBQVAE/cAQa5Dpj+mfmP0AGECaqRFBCAvGoozdAcEIPe7L710J2Il5egnQAUAgEgFhcCASAdHgIBIBgZAgEgGxwB9zIcQHKAVAH8B5wAcoCUAXPFlAD+gJwAcpoI26zJW6zsY49f/AeyHDwHnDwHiRus5l/8B4E8AJQBMyVNANw8B7iJG6zmX/wHgTwAlAEzJU0A3DwHuJw8B4Cf/AeAslYzJYzMwFw8B7iIW6zmH/wHgHwAgHMlDFw8B7iyQGAaACUbDH6ADFx1yH6ADH6ADCnA6sAgAAT7AAApHADyMxDE1AjgQEBzwABzxYBzxbJgAG8AtD0BDAgggDYrwGAEPQPb6Hy4GRtAoIA2K8BgBD0D2+h8uBkEoIA2K8BAoAQ9BfI9ADJQAPwIoAIBIB8gAgEgIiMADz4QlMS8CMwgAacbCL4QW8kgRFNUzvHBfL0UbehggD1/CHC//L0QzBSPPAhcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQgZPAjXPAff1B2cIBAK1RMORiAhAGTIVVCCEBeNRRlQB8sfFcs/UAP6AgHPFgEgbpUwcAHLAZLPFuIB+gIBzxbJEFYQNFnwIAHvPhBbyRTKscFs44S+EJTuPAjAYERTQLwHyTHBfL03lHIoIIA9fwhwv/y9CH4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAlhB9UIlfCOMNJW6zIsIAsI4dcAbwAnAEyAGCENUydttYyx/LP8kQR0MwF21t8CCSNVvigJADTFv4QW8kgRFNUzjHBfL0UYShggD1/CHC//L0QzBSOfAhgT67AYIJMS0AoIIImJaAoBK88vR/cAOAQFQzZshVMIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiyVQTBFAzbW3wIIAByUE1DMPAhUjCgGqFwcChIE1B0yFUwghBzYtCcUAXLHxPLPwH6AgHPFgHPFskoEEZDE1BVbW3wIFAFADe/2BdqJoagD8MUCAgOuAfSAAgP0gAKGYNgn4EkAgJzJygACazx+BFAAHGt6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcA=', 'base64'))[0]); |
||||
let systemCell = beginCell().storeDict(serializeDict(depends, 16, (src, v) => v.refs.push(src))).endCell(); |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'cell', cell: systemCell }); |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(owner).endCell() }); |
||||
if (content !== null) { |
||||
__stack.push({ type: 'cell', cell: content }); |
||||
} else { |
||||
__stack.push({ type: 'null' }); |
||||
} |
||||
let codeCell = Cell.fromBoc(Buffer.from(__code, 'base64'))[0]; |
||||
let executor = await createExecutorFromCode({ code: codeCell, data: new Cell() }); |
||||
let res = await executor.get('init_SampleJetton', __stack, { debug: true }); |
||||
if (res.debugLogs.length > 0) { console.warn(res.debugLogs); } |
||||
let data = res.stack.readCell(); |
||||
return { code: codeCell, data }; |
||||
} |
||||
|
||||
export const SampleJetton_errors: { [key: string]: string } = { |
||||
'2': `Stack undeflow`, |
||||
'3': `Stack overflow`, |
||||
'4': `Integer overflow`, |
||||
'5': `Integer out of expected range`, |
||||
'6': `Invalid opcode`, |
||||
'7': `Type check error`, |
||||
'8': `Cell overflow`, |
||||
'9': `Cell underflow`, |
||||
'10': `Dictionary error`, |
||||
'13': `Out of gas error`, |
||||
'32': `Method ID not found`, |
||||
'34': `Action is invalid or not supported`, |
||||
'37': `Not enough TON`, |
||||
'38': `Not enough extra-currencies`, |
||||
'128': `Null reference exception`, |
||||
'129': `Invalid serialization prefix`, |
||||
'130': `Invalid incoming message`, |
||||
'131': `Constraints error`, |
||||
'132': `Access denied`, |
||||
'133': `Contract stopped`, |
||||
'134': `Invalid argument`, |
||||
'4429': `Invalid sender`, |
||||
'13650': `Invalid bounced message`, |
||||
'16059': `Invalid value`, |
||||
'62972': `Invalid balance`, |
||||
} |
||||
|
||||
export class SampleJetton { |
||||
readonly executor: ContractExecutor;
|
||||
constructor(executor: ContractExecutor) { this.executor = executor; }
|
||||
|
||||
async send(args: { amount: BN, from?: Address, debug?: boolean }, message: Mint | 'Mint!' | TokenUpdateContent | TokenBurnNotification) { |
||||
let body: Cell | null = null; |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'Mint') { |
||||
body = packMint(message); |
||||
} |
||||
if (message === 'Mint!') { |
||||
body = beginCell().storeUint(0, 32).storeBuffer(Buffer.from(message)).endCell(); |
||||
} |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenUpdateContent') { |
||||
body = packTokenUpdateContent(message); |
||||
} |
||||
if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurnNotification') { |
||||
body = packTokenBurnNotification(message); |
||||
} |
||||
if (body === null) { throw new Error('Invalid message type'); } |
||||
try { |
||||
let r = await this.executor.internal(new InternalMessage({ |
||||
to: this.executor.address, |
||||
from: args.from || this.executor.address, |
||||
bounce: false, |
||||
value: args.amount, |
||||
body: new CommonMessageInfo({ |
||||
body: new CellMessage(body!) |
||||
}) |
||||
}), { debug: args.debug }); |
||||
if (r.debugLogs.length > 0) { console.warn(r.debugLogs); } |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (SampleJetton_errors[e.exitCode.toString()]) { |
||||
throw new Error(SampleJetton_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
async getGetWalletAddress(owner: Address) { |
||||
try { |
||||
let __stack: StackItem[] = []; |
||||
__stack.push({ type: 'slice', cell: beginCell().storeAddress(owner).endCell() }); |
||||
let result = await this.executor.get('get_wallet_address', __stack, { debug: true }); |
||||
if (result.debugLogs.length > 0) { console.warn(result.debugLogs); } |
||||
return result.stack.readAddress(); |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (SampleJetton_errors[e.exitCode.toString()]) { |
||||
throw new Error(SampleJetton_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
async getGetJettonData() { |
||||
try { |
||||
let __stack: StackItem[] = []; |
||||
let result = await this.executor.get('get_jetton_data', __stack, { debug: true }); |
||||
if (result.debugLogs.length > 0) { console.warn(result.debugLogs); } |
||||
return unpackStackJettonData(result.stack); |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (SampleJetton_errors[e.exitCode.toString()]) { |
||||
throw new Error(SampleJetton_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
async getOwner() { |
||||
try { |
||||
let __stack: StackItem[] = []; |
||||
let result = await this.executor.get('owner', __stack, { debug: true }); |
||||
if (result.debugLogs.length > 0) { console.warn(result.debugLogs); } |
||||
return result.stack.readAddress(); |
||||
} catch (e) { |
||||
if (e instanceof ExecuteError) { |
||||
if (e.debugLogs.length > 0) { console.warn(e.debugLogs); } |
||||
if (SampleJetton_errors[e.exitCode.toString()]) { |
||||
throw new Error(SampleJetton_errors[e.exitCode.toString()]); |
||||
} |
||||
} |
||||
throw e; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,48 @@
|
||||
import { Address, Cell, contractAddress, StateInit } from "ton"; |
||||
import BN from 'bn.js'; |
||||
import qs from 'qs'; |
||||
|
||||
export function printSeparator() { |
||||
console.log("========================================================================================"); |
||||
} |
||||
|
||||
export function printHeader(name: string) { |
||||
printSeparator(); |
||||
console.log('Contract: ' + name); |
||||
printSeparator(); |
||||
} |
||||
|
||||
export function printAddress(address: Address, testnet: boolean = true) { |
||||
console.log("Address: " + address.toFriendly({ testOnly: testnet })); |
||||
console.log("Explorer: " + "https://" + (testnet ? 'testnet.' : '') + "tonwhales.com/explorer/address/" + address.toFriendly({ testOnly: testnet })); |
||||
printSeparator(); |
||||
} |
||||
|
||||
export function printDeploy(init: { code: Cell, data: Cell }, amount: BN, command: Cell | string, testnet: boolean = true) { |
||||
|
||||
// Resolve target address
|
||||
let to = contractAddress({ workchain: 0, initialCode: init.code, initialData: init.data }); |
||||
|
||||
// Resovle init
|
||||
let cell = new Cell(); |
||||
new StateInit(init).writeTo(cell); |
||||
let initStr = cell.toBoc({ idx: false }).toString("base64"); |
||||
|
||||
let link: string; |
||||
if (typeof command === 'string') { |
||||
link = `https://${testnet ? 'test.' : ''}tonhub.com/transfer/` + to.toFriendly({ testOnly: testnet }) + "?" + qs.stringify({ |
||||
text: command, |
||||
amount: amount.toString(10), |
||||
init: initStr |
||||
}); |
||||
} else { |
||||
link = `https://${testnet ? 'test.' : ''}tonhub.com/transfer/` + to.toFriendly({ testOnly: testnet }) + "?" + qs.stringify({ |
||||
text: "Deploy contract", |
||||
amount: amount.toString(10), |
||||
init: initStr, |
||||
bin: command.toBoc({ idx: false }).toString('base64'), |
||||
}); |
||||
} |
||||
console.log("Deploy: " + link); |
||||
printSeparator(); |
||||
} |
@ -0,0 +1,11 @@
|
||||
import Prando from "prando"; |
||||
import { Address } from "ton"; |
||||
|
||||
export function randomAddress(workchain: number, seed: string) { |
||||
const random = new Prando(seed); |
||||
const hash = Buffer.alloc(32); |
||||
for (let i = 0; i < hash.length; i++) { |
||||
hash[i] = random.nextInt(0, 255); |
||||
} |
||||
return new Address(workchain, hash); |
||||
} |
@ -0,0 +1,7 @@
|
||||
{ |
||||
"projects": [{ |
||||
"name": "jetton", |
||||
"path": "./sources/jetton.tact", |
||||
"output": "./sources/output" |
||||
}] |
||||
} |
@ -0,0 +1,69 @@
|
||||
{ |
||||
"compilerOptions": { |
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */ |
||||
/* Basic Options */ |
||||
// "incremental": true, /* Enable incremental compilation */ |
||||
"target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ |
||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ |
||||
// "lib": [], /* Specify library files to be included in the compilation. */ |
||||
// "allowJs": true, /* Allow javascript files to be compiled. */ |
||||
// "checkJs": true, /* Report errors in .js files. */ |
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ |
||||
"declaration": true, /* Generates corresponding '.d.ts' file. */ |
||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ |
||||
// "sourceMap": true, /* Generates corresponding '.map' file. */ |
||||
// "outFile": "./", /* Concatenate and emit output to single file. */ |
||||
"outDir": "./dist", /* Redirect output structure to the directory. */ |
||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ |
||||
// "composite": true, /* Enable project compilation */ |
||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ |
||||
// "removeComments": true, /* Do not emit comments to output. */ |
||||
// "noEmit": false, /* Do not emit outputs. */ |
||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */ |
||||
"downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ |
||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ |
||||
/* Strict Type-Checking Options */ |
||||
"strict": true, /* Enable all strict type-checking options. */ |
||||
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ |
||||
// "strictNullChecks": true, /* Enable strict null checks. */ |
||||
// "strictFunctionTypes": true, /* Enable strict checking of function types. */ |
||||
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ |
||||
// "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ |
||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ |
||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ |
||||
/* Additional Checks */ |
||||
// "noUnusedLocals": true, /* Report errors on unused locals. */ |
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */ |
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ |
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ |
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ |
||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ |
||||
// "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ |
||||
/* Module Resolution Options */ |
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ |
||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ |
||||
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ |
||||
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ |
||||
// "typeRoots": [], /* List of folders to include type definitions from. */ |
||||
// "types": [], /* Type declaration files to be included in compilation. */ |
||||
"allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ |
||||
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ |
||||
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ |
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ |
||||
/* Source Map Options */ |
||||
// "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ |
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ |
||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ |
||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ |
||||
/* Experimental Options */ |
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ |
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ |
||||
/* Advanced Options */ |
||||
"skipLibCheck": true, /* Skip type checking of declaration files. */ |
||||
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, |
||||
"resolveJsonModule": true |
||||
}, |
||||
"include": [ |
||||
"src/**/*" |
||||
] |
||||
} |
Loading…
Reference in new issue