Browse Source

Linker

master
Lev 2 years ago
parent
commit
79ca27256c
  1. 1
      package.json
  2. 6
      sources/constants.tact
  3. 7
      sources/jetton.tact
  4. 41
      sources/jetton_trait.tact
  5. 17
      sources/linker.tact
  6. 12
      sources/messages.tact
  7. 2
      sources/output/jetton_Linker.abi
  8. BIN
      sources/output/jetton_Linker.code.boc
  9. 28
      sources/output/jetton_Linker.code.fc
  10. 26
      sources/output/jetton_Linker.code.fif
  11. 113
      sources/output/jetton_Linker.code.rev.fif
  12. BIN
      sources/output/jetton_Linker.init.boc
  13. 17
      sources/output/jetton_Linker.init.fc
  14. 14
      sources/output/jetton_Linker.init.fif
  15. 23
      sources/output/jetton_Linker.init.rev.fif
  16. 20
      sources/output/jetton_Linker.md
  17. 2
      sources/output/jetton_Linker.pkg
  18. 133
      sources/output/jetton_Linker.ts
  19. 2
      sources/output/jetton_TONB.abi
  20. BIN
      sources/output/jetton_TONB.code.boc
  21. 79
      sources/output/jetton_TONB.code.fc
  22. 146
      sources/output/jetton_TONB.code.fif
  23. 296
      sources/output/jetton_TONB.code.rev.fif
  24. 14
      sources/output/jetton_TONB.md
  25. 2
      sources/output/jetton_TONB.pkg
  26. 106
      sources/output/jetton_TONB.ts
  27. 2
      sources/output/jetton_TONBWallet.abi
  28. BIN
      sources/output/jetton_TONBWallet.code.boc
  29. 77
      sources/output/jetton_TONBWallet.code.fc
  30. 145
      sources/output/jetton_TONBWallet.code.fif
  31. 359
      sources/output/jetton_TONBWallet.code.rev.fif
  32. BIN
      sources/output/jetton_TONBWallet.init.boc
  33. 20
      sources/output/jetton_TONBWallet.init.fc
  34. 27
      sources/output/jetton_TONBWallet.init.fif
  35. 29
      sources/output/jetton_TONBWallet.init.rev.fif
  36. 14
      sources/output/jetton_TONBWallet.md
  37. 2
      sources/output/jetton_TONBWallet.pkg
  38. 108
      sources/output/jetton_TONBWallet.ts
  39. 51
      sources/tests/__snapshots__/jetton.spec.ts.snap
  40. 22
      sources/tests/jetton.spec.ts
  41. 14
      sources/wallet.tact

1
package.json

@ -8,6 +8,7 @@
"scripts": {
"build": "tact --config tact.config.json && sources/utils/rmlogs.sh",
"test": "jest",
"btest": "yarn build && yarn test -u",
"deploy": "ts-node sources/jetton.deploy.ts"
},
"dependencies": {

6
sources/constants.tact

@ -0,0 +1,6 @@
const gas_consumption: Int = ton("0.01");
const withdraw_gas_consumption: Int = ton("0.01");
const deposit_gas_consumption: Int = ton("0.01"); // Gas consumption during processing
const linker_credit: Int = ton("0.02"); // TON to send to the linker for the fees
const wallet_credit: Int = ton("0.04"); // TON to send to the wallet for the fees

7
sources/jetton.tact

@ -4,6 +4,7 @@ import "./wallet";
import "./linker";
import "./jetton_trait";
import "./staking";
import "./constants";
message Deposit {
amount: Int as coins;
@ -14,11 +15,6 @@ message Withdraw {
}
const gas_consumption: Int = ton("0.01");
const withdraw_gas_consumption: Int = ton("0.05");
const deposit_gas_consumption: Int = ton("0.05");
contract TONB with TONBTrait {
@ -41,6 +37,7 @@ contract TONB with TONBTrait {
receive(msg: Deposit) {
let ctx: Context = context();
require(ctx.value >= deposit_gas_consumption, "not enough money for deposit");
// require(ctx.value >= deposit_gas_consumption + msg.amount + linker_credit + wallet_credit, "not enough money for deposit");
self.mint(ctx.sender, msg.amount, ctx.sender);
}

41
sources/jetton_trait.tact

@ -2,6 +2,7 @@
import "@stdlib/ownable";
import "./wallet";
import "./linker";
import "./constants";
@interface("org.ton.jetton.master")
@ -88,34 +89,38 @@ trait TONBTrait with Ownable {
// Create message
let winit: StateInit = self.getJettonWalletInit(to);
let walletAddress: Address = contractAddress(winit);
// let linker_init: StateInit = initOf Linker(self.n_linkers, walletAddress);
// let linker_address: Address = contractAddress(linker_init);
// send(SendParameters{
// to: linker_address,
// value: 0,
// bounce: false,
// body: SetLinkerNeighbor{
// neighbor: self.last_linker
// }.toCell(),
// code: linker_init.code,
// data: linker_init.data
// });
let linker_init: StateInit = initOf Linker(self.n_linkers, walletAddress, myAddress());
let linker_address: Address = contractAddress(linker_init);
send(SendParameters{
to: walletAddress,
value: ton("0.2"),
to: linker_address,
value: linker_credit,
bounce: false,
body: TokenTransferInternal{
body: SetLinkerNeighbor{
neighbor: self.last_linker
}.toCell(),
code: linker_init.code,
data: linker_init.data
});
self.last_linker = linker_address;
self.n_linkers = self.n_linkers + 1;
let wallet_msg_body: Cell = TokenTransferInternal{
amount: amount,
queryId: 0,
from: myAddress(),
responseAddress: responseAddress,
forwardTonAmount: 0,
forwardPayload: emptySlice()
}.toCell(),
forwardPayload: emptySlice(),
setLinker: linker_address
}.toCell();
send(SendParameters{
to: walletAddress,
value: wallet_credit,
bounce: false,
body: wallet_msg_body,
code: winit.code,
data: winit.data
});
}
fun burn(from: Address, amount: Int, responseAddress: Address?) {

17
sources/linker.tact

@ -1,19 +1,18 @@
import "@stdlib/ownable";
import "./messages";
import "./constants";
contract Linker {
index: Int;
master: Address;
owner: Address?;
owner: Address;
neighbor: Address?;
init(index: Int, owner: Address) {
init(index: Int, owner: Address, master: Address) {
self.index = index;
self.owner = owner;
let ctx: Context = context();
self.master = ctx.sender;
self.master = master;
}
receive(msg: SetLinkerNeighbor) {
@ -21,4 +20,12 @@ contract Linker {
require(ctx.sender == self.master, "Invalid sender");
self.neighbor = msg.neighbor;
}
get fun owner(): Address? {
return self.owner;
}
get fun master(): Address {
return self.master;
}
}

12
sources/messages.tact

@ -15,6 +15,7 @@ message(0x178d4519) TokenTransferInternal {
responseAddress: Address?;
forwardTonAmount: Int as coins;
forwardPayload: Slice as remaining;
setLinker: Address?;
}
message(0x7362d09c) TokenNotification {
@ -61,10 +62,15 @@ struct JettonWalletData {
walletCode: Cell;
}
message InitLinker {
owner: Address;
message SetLinkerNeighbor {
neighbor: Address?;
}
message SetLinkerNeighbor {
message InitLinker {
neighbor: Address?;
walletAmount: Int;
walletCode: Cell;
walletData: Cell;
walletAddress: Address;
responseAddress: Address?;
}

2
sources/output/jetton_Linker.abi

File diff suppressed because one or more lines are too long

BIN
sources/output/jetton_Linker.code.boc

Binary file not shown.

28
sources/output/jetton_Linker.code.fc

@ -52,7 +52,7 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline
var (v'index, v'master, v'owner, v'neighbor) = v;
build_0 = build_0.store_int(v'index, 257);
build_0 = __tact_store_address(build_0, v'master);
build_0 = __tact_store_address_opt(build_0, v'owner);
build_0 = __tact_store_address(build_0, v'owner);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'neighbor);
build_0 = store_ref(build_0, build_1.end_cell());
@ -62,7 +62,7 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline
(slice, ((int, slice, slice, slice))) __gen_read_Linker(slice sc_0) inline_ref {
var v'index = sc_0~load_int(257);
var v'master = sc_0~__tact_load_address();
var v'owner = sc_0~__tact_load_address_opt();
var v'owner = sc_0~__tact_load_address();
slice sc_1 = sc_0~load_ref().begin_parse();
var v'neighbor = sc_1~__tact_load_address_opt();
return (sc_0, (v'index, v'master, v'owner, v'neighbor));
@ -81,6 +81,28 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline
set_data(b.end_cell());
}
slice $__gen_Linker_owner((int, slice, slice, slice) $self) impure {
var (($self'index, $self'master, $self'owner, $self'neighbor)) = $self;
return $self'owner;
}
_ $__gen_get_owner() method_id(83229) {
var self = __gen_load_Linker();
var res = $__gen_Linker_owner(self);
return res;
}
slice $__gen_Linker_master((int, slice, slice, slice) $self) impure {
var (($self'index, $self'master, $self'owner, $self'neighbor)) = $self;
return $self'master;
}
_ $__gen_get_master() method_id(120253) {
var self = __gen_load_Linker();
var res = $__gen_Linker_master(self);
return res;
}
(((int, slice, slice, slice)), ()) $__gen_Linker_receive_SetLinkerNeighbor((int, slice, slice, slice) $self, (slice) $msg) impure {
var ($self'index, $self'master, $self'owner, $self'neighbor) = $self;
var ($msg'neighbor) = $msg;
@ -129,5 +151,5 @@ _ supported_interfaces() method_id {
}
_ get_abi_ipfs() {
return "ipfs://QmT79j24zg2Re4mVCSdgbcXVAfBwfhsZveFUwQHpdgYjCU";
return "ipfs://QmXsiG6UvpNzjujBxShses6JYADwX9LFvLtVUBva7kHxgm";
}

26
sources/output/jetton_Linker.code.fif

@ -11,6 +11,10 @@ PROGRAM{
DECLPROC __gen_read_Linker
DECLPROC __gen_load_Linker
DECLPROC __gen_store_Linker
DECLPROC $__gen_Linker_owner
83229 DECLMETHOD $__gen_get_owner
DECLPROC $__gen_Linker_master
120253 DECLMETHOD $__gen_get_master
DECLPROC $__gen_Linker_receive_SetLinkerNeighbor
DECLPROC recv_internal
113617 DECLMETHOD supported_interfaces
@ -76,7 +80,7 @@ PROGRAM{
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address_opt INLINECALLDICT
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
@ -89,7 +93,7 @@ PROGRAM{
LDIX
__tact_load_address INLINECALLDICT
SWAP
__tact_load_address_opt INLINECALLDICT
__tact_load_address INLINECALLDICT
SWAP
LDREF
SWAP
@ -118,6 +122,22 @@ PROGRAM{
ENDC
c4 POP
}>
$__gen_Linker_owner PROC:<{
s1 s3 XCHG
3 BLKDROP
}>
$__gen_get_owner PROC:<{
__gen_load_Linker INLINECALLDICT
$__gen_Linker_owner CALLDICT
}>
$__gen_Linker_master PROC:<{
s2 s3 XCHG
3 BLKDROP
}>
$__gen_get_master PROC:<{
__gen_load_Linker INLINECALLDICT
$__gen_Linker_master CALLDICT
}>
$__gen_Linker_receive_SetLinkerNeighbor PROC:<{
NIP
__tact_context_get INLINECALLDICT
@ -180,6 +200,6 @@ PROGRAM{
209801025412363888721030803524359905849 PUSHINT
}>
get_abi_ipfs PROC:<{
x{697066733a2f2f516d5437396a32347a67325265346d564353646762635856416642776668735a76654655775148706467596a4355} PUSHSLICE
x{697066733a2f2f516d58736947365576704e7a6a756a42785368736573364a5941447758394c46764c745655427661376b4878676d} PUSHSLICE
}>
}END>c

113
sources/output/jetton_Linker.code.rev.fif

@ -52,17 +52,7 @@ SETCP0
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
s0 s1 XCHG
LDREF
s0 s1 XCHG
@ -108,7 +98,7 @@ SETCP0
s1 POP
s3 s4 XCHG
s1 s3 s0 XCHG3
13 CALLDICT
15 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -122,18 +112,7 @@ SETCP0
s0 s1 XCHG
STSLICER
s0 s1 XCHG
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
STSLICER
NEWC
ROT
s0 PUSH
@ -161,6 +140,14 @@ SETCP0
130 THROW
13:
s1 s3 XCHG
3 BLKDROP
14:
s2 s3 XCHG
3 BLKDROP
15:
s1 POP
1 GETGLOBVAR
4 UNTUPLE
@ -171,9 +158,87 @@ SETCP0
SDEQ
THROWANYIFNOT
owner:
<{
c4 PUSH
CTOS
LDREF
s0 s1 XCHG
2 SETGLOBVAR
<{
257 PUSHINT
LDI
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 4 BLKDROP2
}> CALLREF
13 CALLDICT
113617:
123515602279859691144772641439386770278 PUSHINT
209801025412363888721030803524359905849 PUSHINT
120253:
<{
c4 PUSH
CTOS
LDREF
s0 s1 XCHG
2 SETGLOBVAR
<{
257 PUSHINT
LDI
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 4 BLKDROP2
}> CALLREF
14 CALLDICT
) 19 DICTPUSHCONST
DICTIGETJMPZ
11 THROWARG

BIN
sources/output/jetton_Linker.init.boc

Binary file not shown.

17
sources/output/jetton_Linker.init.fc

@ -1,8 +1,3 @@
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(136, address.slice_bits() != 267);
}
@ -26,29 +21,29 @@ builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline
var (v'index, v'master, v'owner, v'neighbor) = v;
build_0 = build_0.store_int(v'index, 257);
build_0 = __tact_store_address(build_0, v'master);
build_0 = __tact_store_address_opt(build_0, v'owner);
build_0 = __tact_store_address(build_0, v'owner);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'neighbor);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
cell $__gen_Linker_init(cell sys', int $index, slice $owner) {
cell $__gen_Linker_init(cell sys', int $index, slice $owner, slice $master) {
var (($self'index, $self'master, $self'owner, $self'neighbor)) = (null(), null(), null(), null());
$self'index = $index;
$self'owner = $owner;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
$self'master = $ctx'sender;
$self'master = $master;
var b' = begin_cell();
b' = b'.store_ref(sys');
b' = __gen_write_Linker(b', ($self'index, $self'master, $self'owner, $self'neighbor));
return b'.end_cell();
}
cell init(cell sys', int $$index, slice $$owner) method_id {
cell init(cell sys', int $$index, slice $$owner, slice $$master) method_id {
int $index = $$index;
slice $owner = $$owner;
return $__gen_Linker_init(sys', $index, $owner);
slice $master = $$master;
return $__gen_Linker_init(sys', $index, $owner, $master);
}
() main() {

14
sources/output/jetton_Linker.init.fif

@ -1,5 +1,4 @@
PROGRAM{
DECLPROC __tact_context_get
DECLPROC __tact_verify_address
DECLPROC __tact_store_address
DECLPROC __tact_store_address_opt
@ -7,12 +6,6 @@ PROGRAM{
DECLPROC $__gen_Linker_init
107886 DECLMETHOD init
DECLPROC main
DECLGLOBVAR __tact_context
DECLGLOBVAR __tact_context_sys
__tact_context_get PROCINLINE:<{
__tact_context GETGLOB
4 UNTUPLE
}>
__tact_verify_address PROCINLINE:<{
SBITS
267 PUSHINT
@ -41,7 +34,7 @@ PROGRAM{
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address_opt INLINECALLDICT
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
@ -51,13 +44,10 @@ PROGRAM{
}>
$__gen_Linker_init PROC:<{
PUSHNULL
__tact_context_get INLINECALLDICT
s2 s3 XCHG
3 BLKDROP
s0 s4 XCHG
NEWC
STREF
s4 s4 s4 XCHG3
s2 s4 XCHG2
__gen_write_Linker INLINECALLDICT
ENDC
}>

23
sources/output/jetton_Linker.init.rev.fif

@ -2,16 +2,12 @@ SETCP0
(:methods
recv_internal:
6:
5:
PUSHNULL
1 GETGLOBVAR
4 UNTUPLE
s2 s3 XCHG
3 BLKDROP
s0 s4 XCHG
NEWC
STREF
s4 s4 s4 XCHG3
s2 s4 XCHG2
<{
s3 s4 XCHG2
257 PUSHINT
@ -19,18 +15,7 @@ SETCP0
s0 s1 XCHG
STSLICER
s0 s1 XCHG
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
STSLICER
NEWC
ROT
s0 PUSH
@ -52,7 +37,7 @@ SETCP0
ENDC
107886:
6 CALLDICT
5 CALLDICT
) 19 DICTPUSHCONST
DICTIGETJMPZ
11 THROWARG

20
sources/output/jetton_Linker.md

@ -1,6 +1,6 @@
# TACT Compilation Report
Contract: Linker
BOC Size: 316 bytes
BOC Size: 348 bytes
# Types
Total Types: 18
@ -22,8 +22,8 @@ TLB: `token_transfer#0f8a7ea5 queryId:uint64 amount:coins destination:address re
Signature: `TokenTransfer{queryId:uint64,amount:coins,destination:address,responseDestination:Maybe address,customPayload:Maybe ^cell,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
## TokenTransferInternal
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> setLinker:Maybe address = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>,setLinker:Maybe address}`
## TokenNotification
TLB: `token_notification#7362d09c queryId:uint64 amount:coins from:address forwardPayload:remainder<slice> = TokenNotification`
@ -53,14 +53,14 @@ Signature: `JettonData{totalSupply:int257,mintable:bool,owner:address,content:Ma
TLB: `_ balance:int257 owner:address master:address walletCode:^cell = JettonWalletData`
Signature: `JettonWalletData{balance:int257,owner:address,master:address,walletCode:^cell}`
## InitLinker
TLB: `init_linker#453d436d owner:address = InitLinker`
Signature: `InitLinker{owner:address}`
## SetLinkerNeighbor
TLB: `set_linker_neighbor#b3fcf4c1 neighbor:Maybe address = SetLinkerNeighbor`
Signature: `SetLinkerNeighbor{neighbor:Maybe address}`
## InitLinker
TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker`
Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}`
## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`
@ -78,4 +78,8 @@ TLB: `withdraw#60591510 amount:int257 = Withdraw`
Signature: `Withdraw{amount:int257}`
# Get Methods
Total Get Methods: 0
Total Get Methods: 2
## owner
## master

2
sources/output/jetton_Linker.pkg

File diff suppressed because one or more lines are too long

133
sources/output/jetton_Linker.ts

@ -247,6 +247,7 @@ export type TokenTransferInternal = {
responseAddress: Address | null;
forwardTonAmount: bigint;
forwardPayload: Cell;
setLinker: Address | null;
}
export function storeTokenTransferInternal(src: TokenTransferInternal) {
@ -259,6 +260,9 @@ export function storeTokenTransferInternal(src: TokenTransferInternal) {
b_0.storeAddress(src.responseAddress);
b_0.storeCoins(src.forwardTonAmount);
b_0.storeBuilder(src.forwardPayload.asBuilder());
let b_1 = new Builder();
b_1.storeAddress(src.setLinker);
b_0.storeRef(b_1.endCell());
};
}
@ -271,7 +275,9 @@ export function loadTokenTransferInternal(slice: Slice) {
let _responseAddress = sc_0.loadMaybeAddress();
let _forwardTonAmount = sc_0.loadCoins();
let _forwardPayload = sc_0.asCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let sc_1 = sc_0.loadRef().beginParse();
let _setLinker = sc_1.loadMaybeAddress();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function loadTupleTokenTransferInternal(source: TupleReader) {
@ -281,7 +287,8 @@ function loadTupleTokenTransferInternal(source: TupleReader) {
let _responseAddress = source.readAddressOpt();
let _forwardTonAmount = source.readBigNumber();
let _forwardPayload = source.readCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let _setLinker = source.readAddressOpt();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
@ -292,6 +299,7 @@ function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
builder.writeAddress(source.responseAddress);
builder.writeNumber(source.forwardTonAmount);
builder.writeSlice(source.forwardPayload);
builder.writeAddress(source.setLinker);
return builder.build();
}
@ -668,85 +676,113 @@ function dictValueParserJettonWalletData(): DictionaryValue<JettonWalletData> {
}
}
}
export type InitLinker = {
$$type: 'InitLinker';
owner: Address;
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
neighbor: Address | null;
}
export function storeInitLinker(src: InitLinker) {
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(1161642861, 32);
b_0.storeAddress(src.owner);
b_0.storeUint(3019699393, 32);
b_0.storeAddress(src.neighbor);
};
}
export function loadInitLinker(slice: Slice) {
export function loadSetLinkerNeighbor(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 1161642861) { throw Error('Invalid prefix'); }
let _owner = sc_0.loadAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function loadTupleInitLinker(source: TupleReader) {
let _owner = source.readAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
function loadTupleSetLinkerNeighbor(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function storeTupleInitLinker(source: InitLinker) {
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
let builder = new TupleBuilder();
builder.writeAddress(source.owner);
builder.writeAddress(source.neighbor);
return builder.build();
}
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
},
parse: (src) => {
return loadInitLinker(src.loadRef().beginParse());
return loadSetLinkerNeighbor(src.loadRef().beginParse());
}
}
}
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
export type InitLinker = {
$$type: 'InitLinker';
neighbor: Address | null;
walletAmount: bigint;
walletCode: Cell;
walletData: Cell;
walletAddress: Address;
responseAddress: Address | null;
}
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
export function storeInitLinker(src: InitLinker) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(3019699393, 32);
b_0.storeUint(1740669268, 32);
b_0.storeAddress(src.neighbor);
b_0.storeInt(src.walletAmount, 257);
b_0.storeRef(src.walletCode);
b_0.storeRef(src.walletData);
b_0.storeAddress(src.walletAddress);
let b_1 = new Builder();
b_1.storeAddress(src.responseAddress);
b_0.storeRef(b_1.endCell());
};
}
export function loadSetLinkerNeighbor(slice: Slice) {
export function loadInitLinker(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
if (sc_0.loadUint(32) !== 1740669268) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = sc_0.loadIntBig(257);
let _walletCode = sc_0.loadRef();
let _walletData = sc_0.loadRef();
let _walletAddress = sc_0.loadAddress();
let sc_1 = sc_0.loadRef().beginParse();
let _responseAddress = sc_1.loadMaybeAddress();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function loadTupleSetLinkerNeighbor(source: TupleReader) {
function loadTupleInitLinker(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = source.readBigNumber();
let _walletCode = source.readCell();
let _walletData = source.readCell();
let _walletAddress = source.readAddress();
let _responseAddress = source.readAddressOpt();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
function storeTupleInitLinker(source: InitLinker) {
let builder = new TupleBuilder();
builder.writeAddress(source.neighbor);
builder.writeNumber(source.walletAmount);
builder.writeCell(source.walletCode);
builder.writeCell(source.walletData);
builder.writeAddress(source.walletAddress);
builder.writeAddress(source.responseAddress);
return builder.build();
}
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
},
parse: (src) => {
return loadSetLinkerNeighbor(src.loadRef().beginParse());
return loadInitLinker(src.loadRef().beginParse());
}
}
}
@ -922,15 +958,16 @@ function dictValueParserWithdraw(): DictionaryValue<Withdraw> {
}
}
}
async function Linker_init(index: bigint, owner: Address) {
const __init = 'te6ccgEBBwEAYAABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4A0AAdQBI2m34QW8kECNfAwTIzERE2zzJgYAUFA0gQEBzwABzxYBIG6VMHABywGSzxbiyFggbpUwcAHLAZLPFuLJAcw=';
const __code = 'te6ccgECCwEAATAAART/APSkE/S88sgLAQIBYgIDAgLMBAUATaF3owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4Bu2ecBh5YEFAYHCAAfumPwgt5ItwIimmRJjgvl6QEW7UTQ1AH4Yts8bBQJADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBGMj4QgHMVTDbPMntVAoAWoEBAdcA+kABAfpAIdcLAcMAkQGSMW3iAdQB0PpAIdcLAcMAkQGSMW3iMRRDMABQUDSBAQHPAAHPFgEgbpUwcAHLAZLPFuLIWCBulTBwAcsBks8W4skBzA==';
const __system = 'te6cckECDQEAAToAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIFBABNoXejBOC52Hq6WVz2PQnYc6yVCjbNBOE7rGpaVsj5ZkWnXlv74sRzAgLMBwYAH7pj8ILeSLcCIppkSY4L5ekDi9uBDrpOEPypgQa4WP7wFoaYGAuNhgAMi/yLhxAP0gESgzN4J8MIFIrfBBCFn+emDdR8dtngJtnhiIGiCYeAbtnnAYeWBBQLCggBGMj4QgHMVTDbPMntVAkAUFA0gQEBzwABzxYBIG6VMHABywGSzxbiyFggbpUwcAHLAZLPFuLJAcwANtMfAYIQs/z0wbry4IH6QCHXCwHDAJEBkjFt4gEW7UTQ1AH4Yts8bBQMAFqBAQHXAPpAAQH6QCHXCwHDAJEBkjFt4gHUAdD6QCHXCwHDAJEBkjFt4jEUQzD4eYav';
async function Linker_init(index: bigint, owner: Address, master: Address) {
const __init = 'te6ccgEBBwEATgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBE2W0EyMxQJNs8yYGADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcw=';
const __code = 'te6ccgECEwEAAVAAART/APSkE/S88sgLAQIBYgIDAgLMBAUCASANDgOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBEGBwIBWAkKADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBGMj4QgHMVTDbPMntVAgAPFA0gQEBzwABzxYBzxbIWCBulTBwAcsBks8W4skBzAAHUTXwOAIBIAsMAAkECNfA4AAfDH4QW8kW4ERTTIkxwXy9IAENviju2eeAbBECASAPEABNu70YJwXOw9XSyuex6E7DnWSoUbZoJwndY1LStkfLMi068t/fFiOYAQ25W92zzwDoEQEW7UTQ1AH4Yts8bBQSAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMw';
const __system = 'te6cckECFQEAAVoAAQHAAQEFodSXAgEU/wD0pBP0vPLICwMCAWIJBAIBIAgFAgEgBwYBDblb3bPPAOgTAE27vRgnBc7D1dLK57HoTsOdZKhRtmgnCd1jUtK2R8syLTry398WI5gBDb4o7tnngGwTAgLMDwoCAVgOCwIBIA0MAB8MfhBbyRbgRFNMiTHBfL0gAAkECNfA4AAHUTXwOAOL24EOuk4Q/KmBBrhY/vAWhpgYC42GAAyL/IuHEA/SARKDM3gnwwgUit8EEIWf56YN1Hx22eAm2eGIgaIJh4B+2ecBh5YEFBMSEAEYyPhCAcxVMNs8ye1UEQA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMADbTHwGCELP89MG68uCB+kAh1wsBwwCRAZIxbeIBFu1E0NQB+GLbPGwUFABEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMEhMYDc=';
let systemCell = Cell.fromBase64(__system);
let builder = new TupleBuilder();
builder.writeCell(systemCell);
builder.writeNumber(index);
builder.writeAddress(owner);
builder.writeAddress(master);
let __stack = builder.build();
let codeCell = Cell.fromBoc(Buffer.from(__code, 'base64'))[0];
let initCell = Cell.fromBoc(Buffer.from(__init, 'base64'))[0];
@ -984,12 +1021,12 @@ const Linker_errors: { [key: number]: { message: string } } = {
export class Linker implements Contract {
static async init(index: bigint, owner: Address) {
return await Linker_init(index,owner);
static async init(index: bigint, owner: Address, master: Address) {
return await Linker_init(index,owner,master);
}
static async fromInit(index: bigint, owner: Address) {
const init = await Linker_init(index,owner);
static async fromInit(index: bigint, owner: Address, master: Address) {
const init = await Linker_init(index,owner,master);
const address = contractAddress(0, init);
return new Linker(address, init);
}
@ -1021,4 +1058,18 @@ export class Linker implements Contract {
}
async getOwner(provider: ContractProvider) {
let builder = new TupleBuilder();
let source = (await provider.get('owner', builder.build())).stack;
let result = source.readAddressOpt();
return result;
}
async getMaster(provider: ContractProvider) {
let builder = new TupleBuilder();
let source = (await provider.get('master', builder.build())).stack;
let result = source.readAddress();
return result;
}
}

2
sources/output/jetton_TONB.abi

File diff suppressed because one or more lines are too long

BIN
sources/output/jetton_TONB.code.boc

Binary file not shown.

79
sources/output/jetton_TONB.code.fc

@ -79,8 +79,8 @@ cell __tact_dict_get_code(cell dict, int id) inline {
return data;
}
builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, slice, int, slice) v) inline_ref {
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload) = v;
builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, slice, int, slice, slice) v) inline_ref {
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload, v'setLinker) = v;
build_0 = store_uint(build_0, 395134233, 32);
build_0 = build_0.store_uint(v'queryId, 64);
build_0 = build_0.store_coins(v'amount);
@ -88,10 +88,13 @@ builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, sli
build_0 = __tact_store_address_opt(build_0, v'responseAddress);
build_0 = build_0.store_coins(v'forwardTonAmount);
build_0 = build_0.store_slice(v'forwardPayload);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'setLinker);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice) v) inline_ref {
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice, slice) v) inline_ref {
return __gen_write_TokenTransferInternal(begin_cell(), v).end_cell();
}
@ -135,6 +138,17 @@ cell __gen_writecell_TokenExcesses((int) v) inline_ref {
return (sc_0, (v'content));
}
builder __gen_write_SetLinkerNeighbor(builder build_0, (slice) v) inline_ref {
var (v'neighbor) = v;
build_0 = store_uint(build_0, 3019699393, 32);
build_0 = __tact_store_address_opt(build_0, v'neighbor);
return build_0;
}
cell __gen_writecell_SetLinkerNeighbor((slice) v) inline_ref {
return __gen_write_SetLinkerNeighbor(begin_cell(), v).end_cell();
}
(slice, ((int))) __gen_read_Deposit(slice sc_0) inline_ref {
throw_unless(129, sc_0~load_uint(32) == 569292295);
var v'amount = sc_0~load_coins();
@ -147,11 +161,25 @@ cell __gen_writecell_TokenExcesses((int) v) inline_ref {
return (sc_0, (v'amount));
}
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master) = v;
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master, v'linker) = v;
build_0 = build_0.store_int(v'balance, 257);
build_0 = __tact_store_address(build_0, v'owner);
build_0 = __tact_store_address(build_0, v'master);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'linker);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
builder __gen_write_Linker(builder build_0, (int, slice, slice, slice) v) inline_ref {
var (v'index, v'master, v'owner, v'neighbor) = v;
build_0 = build_0.store_int(v'index, 257);
build_0 = __tact_store_address(build_0, v'master);
build_0 = __tact_store_address(build_0, v'owner);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'neighbor);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
@ -273,13 +301,13 @@ slice $contractAddress((cell, cell) $s) impure {
}
cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
var (($self'balance, $self'owner, $self'master)) = (null(), null(), null());
var (($self'balance, $self'owner, $self'master, $self'linker)) = (null(), null(), null(), null());
$self'balance = 0;
$self'owner = $owner;
$self'master = $master;
var b' = begin_cell();
b' = b'.store_ref(sys');
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master));
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'linker));
return b'.end_cell();
}
@ -295,6 +323,29 @@ cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
return (mine, $__gen_TONBWallet_init(sys, $master, $owner));
}
cell $__gen_Linker_init(cell sys', int $index, slice $owner, slice $master) {
var (($self'index, $self'master, $self'owner, $self'neighbor)) = (null(), null(), null(), null());
$self'index = $index;
$self'owner = $owner;
$self'master = $master;
var b' = begin_cell();
b' = b'.store_ref(sys');
b' = __gen_write_Linker(b', ($self'index, $self'master, $self'owner, $self'neighbor));
return b'.end_cell();
}
(cell, cell) $__gen_Linker_init_child(cell sys', int $index, slice $owner, slice $master) {
slice sc' = sys'.begin_parse();
cell source = sc'~load_dict();
cell contracts = new_dict();
;; Contract Code: Linker
cell mine = __tact_dict_get_code(source, 59979);
contracts = __tact_dict_set_code(contracts, 59979, mine);
cell sys = begin_cell().store_dict(contracts).end_cell();
return (mine, $__gen_Linker_init(sys, $index, $owner, $master));
}
((int, slice, cell, int, slice, slice, int, slice), (cell, cell)) $__gen_TONB_getJettonWalletInit((int, slice, cell, int, slice, slice, int, slice) $self, slice $address) impure {
var (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)) = $self;
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), $__gen_TONBWallet_init_child(__tact_context_sys, my_address(), $address));
@ -330,7 +381,13 @@ _ $__gen_get_get_jetton_data() method_id(106029) {
$self'totalSupply = ($self'totalSupply + $amount);
var ($winit'code, $winit'data) = ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_getJettonWalletInit($to);
slice $walletAddress = $contractAddress(($winit'code, $winit'data));
$send((false, $walletAddress, 200000000, 0, __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, $emptySlice())), $winit'code, $winit'data));
var ($linker_init'code, $linker_init'data) = $__gen_Linker_init_child(__tact_context_sys, $self'n_linkers, $walletAddress, my_address());
slice $linker_address = $contractAddress(($linker_init'code, $linker_init'data));
$send((false, $linker_address, 20000000, 0, __gen_writecell_SetLinkerNeighbor(($self'last_linker)), $linker_init'code, $linker_init'data));
$self'last_linker = $linker_address;
$self'n_linkers = ($self'n_linkers + 1);
cell $wallet_msg_body = __gen_writecell_TokenTransferInternal((0, $amount, my_address(), $responseAddress, 0, $emptySlice(), $linker_address));
$send((false, $walletAddress, 40000000, 0, $wallet_msg_body, $winit'code, $winit'data));
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ());
}
@ -371,7 +428,7 @@ _ $__gen_get_owner() method_id(83229) {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self;
var ($msg'amount) = $msg;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
throw_unless(32366, ($ctx'value >= 50000000));
throw_unless(32366, ($ctx'value >= 10000000));
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_mint($ctx'sender, $msg'amount, $ctx'sender);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ());
}
@ -385,7 +442,7 @@ _ $__gen_get_owner() method_id(83229) {
var ($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool) = $self;
var ($msg'amount) = $msg;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
throw_unless(6384, ($ctx'value >= 50000000));
throw_unless(6384, ($ctx'value >= 10000000));
($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool)~$__gen_TONB_burn($ctx'sender, $msg'amount, $ctx'sender);
return (($self'totalSupply, $self'owner, $self'content, $self'mintable, $self'first_linker, $self'last_linker, $self'n_linkers, $self'staking_pool), ());
}
@ -485,5 +542,5 @@ _ supported_interfaces() method_id {
}
_ get_abi_ipfs() {
return "ipfs://Qma6JYPtEyX4isBJUUKdLJZsPe3r5ig6X7NFfzn7hBBCFC";
return "ipfs://QmPvEiZGrqt4f1VDKeQxyzgba7g5qVaCcnFiXAyVCz4R9o";
}

146
sources/output/jetton_TONB.code.fif

@ -20,9 +20,12 @@ PROGRAM{
DECLPROC __gen_write_TokenExcesses
DECLPROC __gen_writecell_TokenExcesses
DECLPROC __gen_read_TokenUpdateContent
DECLPROC __gen_write_SetLinkerNeighbor
DECLPROC __gen_writecell_SetLinkerNeighbor
DECLPROC __gen_read_Deposit
DECLPROC __gen_read_Withdraw
DECLPROC __gen_write_TONBWallet
DECLPROC __gen_write_Linker
DECLPROC __gen_write_TONB
DECLPROC __gen_read_TONB
DECLPROC __gen_StateInit_get_code
@ -37,6 +40,8 @@ PROGRAM{
DECLPROC $send
DECLPROC $__gen_TONBWallet_init
DECLPROC $__gen_TONBWallet_init_child
DECLPROC $__gen_Linker_init
DECLPROC $__gen_Linker_init_child
DECLPROC $__gen_TONB_getJettonWalletInit
DECLPROC $__gen_TONB_get_wallet_address
103289 DECLMETHOD $__gen_get_get_wallet_address
@ -157,13 +162,13 @@ PROGRAM{
}>
__gen_write_TokenTransferInternal PROCREF:<{
395134233 PUSHINT
s0 s7 XCHG2
s0 s8 XCHG2
32 STU
s1 s5 XCHG
s1 s6 XCHG
64 STU
s0 s3 XCHG2
s0 s4 XCHG2
STGRAMS
SWAP
ROT
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address_opt INLINECALLDICT
@ -171,10 +176,16 @@ PROGRAM{
STGRAMS
SWAP
STSLICER
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
__gen_writecell_TokenTransferInternal PROCREF:<{
NEWC
6 -ROLL
7 -ROLL
__gen_write_TokenTransferInternal INLINECALLDICT
ENDC
}>
@ -239,6 +250,19 @@ PROGRAM{
}>
SWAP
}>
__gen_write_SetLinkerNeighbor PROCREF:<{
3019699393 PUSHINT
ROT
32 STU
SWAP
__tact_store_address_opt INLINECALLDICT
}>
__gen_writecell_SetLinkerNeighbor PROCREF:<{
NEWC
SWAP
__gen_write_SetLinkerNeighbor INLINECALLDICT
ENDC
}>
__gen_read_Deposit PROCREF:<{
32 LDU
SWAP
@ -259,13 +283,34 @@ PROGRAM{
SWAP
}>
__gen_write_TONBWallet PROCREF:<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
__gen_write_Linker PROCREF:<{
s3 s4 XCHG2
257 PUSHINT
STIX
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
__gen_write_TONB PROCREF:<{
s8 s7 XCHG2
@ -477,11 +522,13 @@ PROGRAM{
SENDRAWMSG
}>
$__gen_TONBWallet_init PROC:<{
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
__gen_write_TONBWallet INLINECALLDICT
ENDC
}>
@ -504,6 +551,35 @@ PROGRAM{
s0 s0 s3 XCHG3
$__gen_TONBWallet_init CALLDICT
}>
$__gen_Linker_init PROC:<{
PUSHNULL
s0 s4 XCHG
NEWC
STREF
s2 s4 XCHG2
__gen_write_Linker INLINECALLDICT
ENDC
}>
$__gen_Linker_init_child PROC:<{
s0 s3 XCHG
CTOS
LDDICT
DROP
NEWDICT
SWAP
59979 PUSHINT
__tact_dict_get_code INLINECALLDICT
SWAP
59979 PUSHINT
s2 PUSH
__tact_dict_set_code INLINECALLDICT
NEWC
STDICT
ENDC
3 -ROLL
s0 s4 XCHG
$__gen_Linker_init CALLDICT
}>
$__gen_TONB_getJettonWalletInit PROC:<{
__tact_context_sys GETGLOB
MYADDR
@ -539,24 +615,50 @@ PROGRAM{
$__gen_TONB_getJettonWalletInit CALLDICT
2DUP
$contractAddress CALLDICT
__tact_context_sys GETGLOB
MYADDR
s6 s2 s(-2) PU2XC
$__gen_Linker_init_child CALLDICT
2DUP
$contractAddress CALLDICT
FALSE
200000000 PUSHINT
20000000 PUSHINT
0 PUSHINT
s0 s11 XCHG
__gen_writecell_SetLinkerNeighbor INLINECALLDICT
s3 PUSH
s3 s6 XCHG
s4 s1 s5 XCHG3
s3 s12 XCHG
s1 s12 s0 XCHG3
$send CALLDICT
s5 PUSH
s0 s5 XCHG
INC
0 PUSHINT
DUP
MYADDR
OVER
$emptySlice CALLDICT
s3 s5 XCHG
s4 18 s() XCHG
s2 s3 XCHG
s2 19 s() XCHG
s3 s6 XCHG
s5 16 s() XCHG
s2 s4 XCHG
s3 17 s() XCHG
s1 s0 s10 XCHG3
__gen_writecell_TokenTransferInternal INLINECALLDICT
s5 s6 s0 XCHG3
s4 s14 XCHG
s3 s13 XCHG
s0 s14 s13 XCHG3
FALSE
s0 s4 XCHG
s3 s11 XCHG
40000000 PUSHINT
s0 s3 XCHG
0 PUSHINT
s3 s1 s3 XCHG3
s0 s14 XCHG
$send CALLDICT
2 6 BLKSWAP
s5 s7 XCHG
s4 s6 XCHG
s3 s5 XCHG
s4 s0 s3 XCHG3
s0 s2 XCHG
}>
$__gen_TONB_burn PROC:<{
s7 s10 XCHG
@ -622,7 +724,7 @@ PROGRAM{
DROP
32366 PUSHINT
s3 POP
50000000 PUSHINT
10000000 PUSHINT
GEQ
s1 s2 XCHG
THROWANYIFNOT
@ -636,7 +738,7 @@ PROGRAM{
DROP
6384 PUSHINT
s3 POP
50000000 PUSHINT
10000000 PUSHINT
GEQ
s1 s2 XCHG
THROWANYIFNOT
@ -814,6 +916,6 @@ PROGRAM{
86142586315491086060343270784266291122 PUSHINT
}>
get_abi_ipfs PROC:<{
x{697066733a2f2f516d61364a595074457958346973424a55554b644c4a5a73506533723569673658374e46667a6e37684242434643} PUSHSLICE
x{697066733a2f2f516d507645695a4772717434663156444b655178797a67626137673571566143636e466958417956437a3452396f} PUSHSLICE
}>
}END>c

296
sources/output/jetton_TONB.code.rev.fif

@ -133,7 +133,7 @@ SETCP0
s4 s5 XCHG
s3 s4 XCHG
s1 s3 s0 XCHG3
47 CALLDICT
52 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -298,7 +298,7 @@ SETCP0
}> CALLREF
1 8 BLKDROP2
}> CALLREF
48 CALLDICT
53 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -478,7 +478,7 @@ SETCP0
s4 s5 XCHG
s3 s4 XCHG
s1 s3 s0 XCHG3
49 CALLDICT
54 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -665,7 +665,7 @@ SETCP0
s4 s5 XCHG
s3 s4 XCHG
s1 s3 s0 XCHG3
50 CALLDICT
55 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -861,7 +861,7 @@ SETCP0
s5 s6 XCHG
s4 s5 XCHG
1 3 BLKSWAP
51 CALLDICT
56 CALLDICT
<{
NEWC
2 GETGLOBVAR
@ -951,20 +951,20 @@ SETCP0
ISNULL
128 THROWIF
29:
32:
35:
NEWC
ENDC
33:
36:
CTOS
34:
32 CALLDICT
33 CALLDICT
37:
35 CALLDICT
36 CALLDICT
35:
38:
0 PUSHINT
ROTREV
NEWC
@ -995,7 +995,7 @@ SETCP0
ENDC
CTOS
36:
39:
NEWC
1 PUSHINT
s0 s1 XCHG
@ -1112,24 +1112,43 @@ SETCP0
s0 s1 XCHG
1 STI
37:
40:
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
38:
41:
s0 s2 XCHG
CTOS
LDDICT
@ -1152,60 +1171,160 @@ SETCP0
STDICT
ENDC
s0 s0 s3 XCHG3
37 CALLDICT
40 CALLDICT
39:
42:
PUSHNULL
s0 s4 XCHG
NEWC
STREF
s2 s4 XCHG2
<{
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
43:
s0 s3 XCHG
CTOS
LDDICT
s0 POP
PUSHNULL
s0 s1 XCHG
59979 PUSHINT
s0 s1 XCHG
16 PUSHINT
DICTUGETREF
NULLSWAPIFNOT
135 THROWIFNOT
s0 s1 XCHG
59979 PUSHINT
s2 PUSH
s0 s2 XCHG
16 PUSHINT
DICTUSETREF
NEWC
STDICT
ENDC
3 1 BLKSWAP
s0 s4 XCHG
42 CALLDICT
44:
2 GETGLOBVAR
MYADDR
ROT
38 CALLDICT
41 CALLDICT
40:
39 CALLDICT
45:
44 CALLDICT
8 2 BLKDROP2
35 CALLDICT
38 CALLDICT
41:
46:
MYADDR
39 CALLDICT
44 CALLDICT
4 2 BLKDROP2
s0 POP
s3 s3 s0 XCHG3
42:
47:
s10 s1 XCPU
ADD
8 2 BLKSWAP
39 CALLDICT
44 CALLDICT
2DUP
35 CALLDICT
38 CALLDICT
2 GETGLOBVAR
MYADDR
6 2 -2 PU2XC
43 CALLDICT
2DUP
38 CALLDICT
0 PUSHINT
200000000 PUSHINT
20000000 PUSHINT
0 PUSHINT
s0 s11 XCHG
<{
NEWC
s0 s1 XCHG
<{
3019699393 PUSHINT
ROT
32 STU
s0 s1 XCHG
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
}> CALLREF
ENDC
}> CALLREF
s3 PUSH
s3 s6 XCHG
s4 s1 s5 XCHG3
s3 s12 XCHG
s1 s12 s0 XCHG3
39 CALLDICT
s5 PUSH
s0 s5 XCHG
INC
0 PUSHINT
s0 PUSH
MYADDR
s1 PUSH
34 CALLDICT
s3 s5 XCHG
s0 s4 XCHG
s0 s18 XCHG
s0 s4 XCHG
s2 s3 XCHG
s0 s2 XCHG
s0 s19 XCHG
s0 s2 XCHG
37 CALLDICT
s3 s6 XCHG
s0 s5 XCHG
s0 s16 XCHG
s0 s5 XCHG
s2 s4 XCHG
s0 s3 XCHG
s0 s17 XCHG
s0 s3 XCHG
s1 s0 s10 XCHG3
<{
NEWC
6 1 BLKSWAP
7 1 BLKSWAP
<{
395134233 PUSHINT
s0 s7 XCHG2
s0 s8 XCHG2
32 STU
s1 s5 XCHG
s1 s6 XCHG
64 STU
s0 s3 XCHG2
s0 s4 XCHG2
STGRAMS
s0 s1 XCHG
ROT
STSLICER
s0 s1 XCHG
s0 PUSH
@ -1224,17 +1343,42 @@ SETCP0
STGRAMS
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
}> CALLREF
s5 s6 s0 XCHG3
s4 s14 XCHG
s3 s13 XCHG
s0 s14 s13 XCHG3
36 CALLDICT
2 6 BLKSWAP
0 PUSHINT
s0 s4 XCHG
s3 s11 XCHG
40000000 PUSHINT
s0 s3 XCHG
0 PUSHINT
s3 s1 s3 XCHG3
s0 s14 XCHG
39 CALLDICT
s5 s7 XCHG
s4 s6 XCHG
s3 s5 XCHG
s4 s0 s3 XCHG3
s0 s2 XCHG
43:
48:
s7 s10 XCHG
s6 s9 XCHG
s5 s8 XCHG
@ -1242,9 +1386,9 @@ SETCP0
s3 s9 XCHG
s8 s10 s9 XCHG3
s8 PUSH
39 CALLDICT
44 CALLDICT
2DUP
35 CALLDICT
38 CALLDICT
0 PUSHINT
0 PUSHINT
64 PUSHINT
@ -1288,28 +1432,28 @@ SETCP0
s4 s14 XCHG
s3 s12 XCHG
s12 s2 XCHG2
36 CALLDICT
39 CALLDICT
s4 s7 XCHG
3 4 BLKSWAP
44:
49:
1 GETGLOBVAR
4 UNTUPLE
s2 s3 XCHG
3 BLKDROP
9 1 BLKSWAP
39 CALLDICT
44 CALLDICT
s0 s1 XCHG
4429 PUSHINT
s0 s2 XCHG
35 CALLDICT
38 CALLDICT
s0 s10 XCHG2
SDEQ
s1 s9 XCHG
THROWANYIFNOT
1 7 BLKSWAP
45:
50:
1 GETGLOBVAR
4 UNTUPLE
s2 s3 XCHG
@ -1318,47 +1462,47 @@ SETCP0
SDEQ
132 THROWIFNOT
46:
51:
s6 s7 XCHG
7 BLKDROP
47:
52:
1 GETGLOBVAR
4 UNTUPLE
s0 POP
32366 PUSHINT
s3 POP
50000000 PUSHINT
10000000 PUSHINT
GEQ
s1 s2 XCHG
THROWANYIFNOT
TUCK
42 CALLDICT
47 CALLDICT
48:
53:
49:
54:
1 GETGLOBVAR
4 UNTUPLE
s0 POP
6384 PUSHINT
s3 POP
50000000 PUSHINT
10000000 PUSHINT
GEQ
s1 s2 XCHG
THROWANYIFNOT
TUCK
43 CALLDICT
48 CALLDICT
50:
55:
8 1 BLKSWAP
45 CALLDICT
50 CALLDICT
s5 POP
s6 s7 XCHG
s5 s6 XCHG
1 4 BLKSWAP
51:
56:
s8 s11 XCHG
s7 s10 XCHG
s6 s9 XCHG
@ -1366,7 +1510,7 @@ SETCP0
s4 s10 XCHG
s3 s9 XCHG
s11 s10 s10 XCHG3
44 CALLDICT
49 CALLDICT
s7 s10 XCHG2
SUB
s8 PUSH
@ -1395,7 +1539,7 @@ SETCP0
s1 s10 XCHG
PUSHNULL
PUSHNULL
36 CALLDICT
39 CALLDICT
}> PUSHCONT
<{
s7 POP
@ -1483,7 +1627,7 @@ SETCP0
}> CALLREF
1 8 BLKDROP2
}> CALLREF
46 CALLDICT
51 CALLDICT
get_wallet_address:
<{
@ -1562,7 +1706,7 @@ SETCP0
1 8 BLKDROP2
}> CALLREF
1 8 BLKSWAP
40 CALLDICT
45 CALLDICT
get_jetton_data:
<{
@ -1640,8 +1784,8 @@ SETCP0
}> CALLREF
1 8 BLKDROP2
}> CALLREF
41 CALLDICT
29 CALLDICT
46 CALLDICT
32 CALLDICT
113617:
123515602279859691144772641439386770278 PUSHINT

14
sources/output/jetton_TONB.md

@ -1,6 +1,6 @@
# TACT Compilation Report
Contract: TONB
BOC Size: 1506 bytes
BOC Size: 1684 bytes
# Types
Total Types: 18
@ -22,8 +22,8 @@ TLB: `token_transfer#0f8a7ea5 queryId:uint64 amount:coins destination:address re
Signature: `TokenTransfer{queryId:uint64,amount:coins,destination:address,responseDestination:Maybe address,customPayload:Maybe ^cell,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
## TokenTransferInternal
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> setLinker:Maybe address = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>,setLinker:Maybe address}`
## TokenNotification
TLB: `token_notification#7362d09c queryId:uint64 amount:coins from:address forwardPayload:remainder<slice> = TokenNotification`
@ -53,14 +53,14 @@ Signature: `JettonData{totalSupply:int257,mintable:bool,owner:address,content:Ma
TLB: `_ balance:int257 owner:address master:address walletCode:^cell = JettonWalletData`
Signature: `JettonWalletData{balance:int257,owner:address,master:address,walletCode:^cell}`
## InitLinker
TLB: `init_linker#453d436d owner:address = InitLinker`
Signature: `InitLinker{owner:address}`
## SetLinkerNeighbor
TLB: `set_linker_neighbor#b3fcf4c1 neighbor:Maybe address = SetLinkerNeighbor`
Signature: `SetLinkerNeighbor{neighbor:Maybe address}`
## InitLinker
TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker`
Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}`
## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_TONB.pkg

File diff suppressed because one or more lines are too long

106
sources/output/jetton_TONB.ts

@ -247,6 +247,7 @@ export type TokenTransferInternal = {
responseAddress: Address | null;
forwardTonAmount: bigint;
forwardPayload: Cell;
setLinker: Address | null;
}
export function storeTokenTransferInternal(src: TokenTransferInternal) {
@ -259,6 +260,9 @@ export function storeTokenTransferInternal(src: TokenTransferInternal) {
b_0.storeAddress(src.responseAddress);
b_0.storeCoins(src.forwardTonAmount);
b_0.storeBuilder(src.forwardPayload.asBuilder());
let b_1 = new Builder();
b_1.storeAddress(src.setLinker);
b_0.storeRef(b_1.endCell());
};
}
@ -271,7 +275,9 @@ export function loadTokenTransferInternal(slice: Slice) {
let _responseAddress = sc_0.loadMaybeAddress();
let _forwardTonAmount = sc_0.loadCoins();
let _forwardPayload = sc_0.asCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let sc_1 = sc_0.loadRef().beginParse();
let _setLinker = sc_1.loadMaybeAddress();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function loadTupleTokenTransferInternal(source: TupleReader) {
@ -281,7 +287,8 @@ function loadTupleTokenTransferInternal(source: TupleReader) {
let _responseAddress = source.readAddressOpt();
let _forwardTonAmount = source.readBigNumber();
let _forwardPayload = source.readCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let _setLinker = source.readAddressOpt();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
@ -292,6 +299,7 @@ function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
builder.writeAddress(source.responseAddress);
builder.writeNumber(source.forwardTonAmount);
builder.writeSlice(source.forwardPayload);
builder.writeAddress(source.setLinker);
return builder.build();
}
@ -668,85 +676,113 @@ function dictValueParserJettonWalletData(): DictionaryValue<JettonWalletData> {
}
}
}
export type InitLinker = {
$$type: 'InitLinker';
owner: Address;
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
neighbor: Address | null;
}
export function storeInitLinker(src: InitLinker) {
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(1161642861, 32);
b_0.storeAddress(src.owner);
b_0.storeUint(3019699393, 32);
b_0.storeAddress(src.neighbor);
};
}
export function loadInitLinker(slice: Slice) {
export function loadSetLinkerNeighbor(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 1161642861) { throw Error('Invalid prefix'); }
let _owner = sc_0.loadAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function loadTupleInitLinker(source: TupleReader) {
let _owner = source.readAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
function loadTupleSetLinkerNeighbor(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function storeTupleInitLinker(source: InitLinker) {
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
let builder = new TupleBuilder();
builder.writeAddress(source.owner);
builder.writeAddress(source.neighbor);
return builder.build();
}
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
},
parse: (src) => {
return loadInitLinker(src.loadRef().beginParse());
return loadSetLinkerNeighbor(src.loadRef().beginParse());
}
}
}
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
export type InitLinker = {
$$type: 'InitLinker';
neighbor: Address | null;
walletAmount: bigint;
walletCode: Cell;
walletData: Cell;
walletAddress: Address;
responseAddress: Address | null;
}
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
export function storeInitLinker(src: InitLinker) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(3019699393, 32);
b_0.storeUint(1740669268, 32);
b_0.storeAddress(src.neighbor);
b_0.storeInt(src.walletAmount, 257);
b_0.storeRef(src.walletCode);
b_0.storeRef(src.walletData);
b_0.storeAddress(src.walletAddress);
let b_1 = new Builder();
b_1.storeAddress(src.responseAddress);
b_0.storeRef(b_1.endCell());
};
}
export function loadSetLinkerNeighbor(slice: Slice) {
export function loadInitLinker(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
if (sc_0.loadUint(32) !== 1740669268) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = sc_0.loadIntBig(257);
let _walletCode = sc_0.loadRef();
let _walletData = sc_0.loadRef();
let _walletAddress = sc_0.loadAddress();
let sc_1 = sc_0.loadRef().beginParse();
let _responseAddress = sc_1.loadMaybeAddress();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function loadTupleSetLinkerNeighbor(source: TupleReader) {
function loadTupleInitLinker(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = source.readBigNumber();
let _walletCode = source.readCell();
let _walletData = source.readCell();
let _walletAddress = source.readAddress();
let _responseAddress = source.readAddressOpt();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
function storeTupleInitLinker(source: InitLinker) {
let builder = new TupleBuilder();
builder.writeAddress(source.neighbor);
builder.writeNumber(source.walletAmount);
builder.writeCell(source.walletCode);
builder.writeCell(source.walletData);
builder.writeAddress(source.walletAddress);
builder.writeAddress(source.responseAddress);
return builder.build();
}
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
},
parse: (src) => {
return loadSetLinkerNeighbor(src.loadRef().beginParse());
return loadInitLinker(src.loadRef().beginParse());
}
}
}
@ -924,8 +960,8 @@ function dictValueParserWithdraw(): DictionaryValue<Withdraw> {
}
async function TONB_init(owner: Address, content: Cell | null) {
const __init = 'te6ccgEBBwEAhgABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBJWW1tcG0hfwjIzAhEdBYVE9s8yYGAJpQh/oCUAXPFiNus5Z/AcoAE8yWM3BQA8oA4soAASBulTBwAcsBks8W4gEgbpUwcAHLAZLPFuICyIEBAc8AASBulTBwAcsBks8W4skBzA==';
const __code = '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';
const __system = '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';
const __code = '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';
const __system = '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';
let systemCell = Cell.fromBase64(__system);
let builder = new TupleBuilder();
builder.writeCell(systemCell);

2
sources/output/jetton_TONBWallet.abi

File diff suppressed because one or more lines are too long

BIN
sources/output/jetton_TONBWallet.code.boc

Binary file not shown.

77
sources/output/jetton_TONBWallet.code.fc

@ -99,8 +99,8 @@ cell __tact_dict_get_code(cell dict, int id) inline {
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_ref {
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload) = v;
builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, slice, int, slice, slice) v) inline_ref {
var (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload, v'setLinker) = v;
build_0 = store_uint(build_0, 395134233, 32);
build_0 = build_0.store_uint(v'queryId, 64);
build_0 = build_0.store_coins(v'amount);
@ -108,14 +108,17 @@ builder __gen_write_TokenTransferInternal(builder build_0, (int, int, slice, sli
build_0 = __tact_store_address_opt(build_0, v'responseAddress);
build_0 = build_0.store_coins(v'forwardTonAmount);
build_0 = build_0.store_slice(v'forwardPayload);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'setLinker);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice) v) inline_ref {
cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice, slice) v) inline_ref {
return __gen_write_TokenTransferInternal(begin_cell(), v).end_cell();
}
(slice, ((int, int, slice, slice, int, slice))) __gen_read_TokenTransferInternal(slice sc_0) inline_ref {
(slice, ((int, int, slice, slice, int, slice, slice))) __gen_read_TokenTransferInternal(slice sc_0) inline_ref {
throw_unless(129, sc_0~load_uint(32) == 395134233);
var v'queryId = sc_0~load_uint(64);
var v'amount = sc_0~load_coins();
@ -123,7 +126,9 @@ cell __gen_writecell_TokenTransferInternal((int, int, slice, slice, int, slice)
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));
slice sc_1 = sc_0~load_ref().begin_parse();
var v'setLinker = sc_1~__tact_load_address_opt();
return (sc_0, (v'queryId, v'amount, v'from, v'responseAddress, v'forwardTonAmount, v'forwardPayload, v'setLinker));
}
builder __gen_write_TokenNotification(builder build_0, (int, int, slice, slice) v) inline_ref {
@ -174,19 +179,24 @@ cell __gen_writecell_TokenExcesses((int) v) inline_ref {
return __gen_write_TokenExcesses(begin_cell(), v).end_cell();
}
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master) = v;
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master, v'linker) = v;
build_0 = build_0.store_int(v'balance, 257);
build_0 = __tact_store_address(build_0, v'owner);
build_0 = __tact_store_address(build_0, v'master);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'linker);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
(slice, ((int, slice, slice))) __gen_read_TONBWallet(slice sc_0) inline_ref {
(slice, ((int, slice, slice, slice))) __gen_read_TONBWallet(slice sc_0) inline_ref {
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));
slice sc_1 = sc_0~load_ref().begin_parse();
var v'linker = sc_1~__tact_load_address_opt();
return (sc_0, (v'balance, v'owner, v'master, v'linker));
}
_ __gen_StateInit_get_code((cell, cell) v) inline {
@ -199,13 +209,13 @@ _ __gen_StateInit_get_code((cell, cell) v) inline {
return (v'balance, v'owner, v'master, v'walletCode);
}
(int, slice, slice) __gen_load_TONBWallet() inline_ref {
(int, slice, slice, slice) __gen_load_TONBWallet() inline_ref {
slice sc = get_data().begin_parse();
__tact_context_sys = sc~load_ref();
return sc~__gen_read_TONBWallet();
}
() __gen_store_TONBWallet((int, slice, slice) v) impure inline_ref {
() __gen_store_TONBWallet((int, slice, slice, slice) v) impure inline_ref {
builder b = begin_cell();
b = b.store_ref(__tact_context_sys);
b = __gen_write_TONBWallet(b, v);
@ -271,13 +281,13 @@ int $__gen_Context_readForwardFee((int, slice, int, slice) $self) impure {
}
cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
var (($self'balance, $self'owner, $self'master)) = (null(), null(), null());
var (($self'balance, $self'owner, $self'master, $self'linker)) = (null(), null(), null(), null());
$self'balance = 0;
$self'owner = $owner;
$self'master = $master;
var b' = begin_cell();
b' = b'.store_ref(sys');
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master));
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'linker));
return b'.end_cell();
}
@ -293,8 +303,8 @@ cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
return (mine, $__gen_TONBWallet_init(sys, $master, $owner));
}
(int, slice, slice, cell) $__gen_TONBWallet_get_wallet_data((int, slice, slice) $self) impure {
var (($self'balance, $self'owner, $self'master)) = $self;
(int, slice, slice, cell) $__gen_TONBWallet_get_wallet_data((int, slice, slice, slice) $self) impure {
var (($self'balance, $self'owner, $self'master, $self'linker)) = $self;
return ($self'balance, $self'owner, $self'master, __gen_StateInit_get_code($__gen_TONBWallet_init_child(__tact_context_sys, $self'master, $self'owner)));
}
@ -304,8 +314,8 @@ _ $__gen_get_get_wallet_data() method_id(97026) {
return __gen_JettonWalletData_to_external(res);
}
(((int, slice, slice)), ()) $__gen_TONBWallet_receive_TokenTransfer((int, slice, slice) $self, (int, int, slice, slice, cell, int, slice) $msg) impure {
var ($self'balance, $self'owner, $self'master) = $self;
(((int, slice, slice, slice)), ()) $__gen_TONBWallet_receive_TokenTransfer((int, slice, slice, slice) $self, (int, int, slice, slice, cell, int, slice) $msg) impure {
var ($self'balance, $self'owner, $self'master, $self'linker) = $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));
@ -319,15 +329,18 @@ _ $__gen_get_get_wallet_data() method_id(97026) {
throw_unless(16059, ($ctx'value > ((($fwdCount * $fwdFee) + (2 * 10000000)) + 10000000)));
var ($init'code, $init'data) = $__gen_TONBWallet_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), ());
$send((true, $walletAddress, 0, 64, __gen_writecell_TokenTransferInternal(($msg'queryId, $msg'amount, $self'owner, $self'owner, $msg'forwardTonAmount, $msg'forwardPayload, null())), $init'code, $init'data));
return (($self'balance, $self'owner, $self'master, $self'linker), ());
}
(((int, slice, slice)), ()) $__gen_TONBWallet_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;
(((int, slice, slice, slice)), ()) $__gen_TONBWallet_receive_TokenTransferInternal((int, slice, slice, slice) $self, (int, int, slice, slice, int, slice, slice) $msg) impure {
var ($self'balance, $self'owner, $self'master, $self'linker) = $self;
var ($msg'queryId, $msg'amount, $msg'from, $msg'responseAddress, $msg'forwardTonAmount, $msg'forwardPayload, $msg'setLinker) = $msg;
var ($ctx'bounced, $ctx'sender, $ctx'value, $ctx'raw) = __tact_context_get();
if (__tact_address_neq($ctx'sender, $self'master)) {
if (null?($self'linker)) {
$self'linker = $msg'setLinker;
}
if ((__tact_address_neq($ctx'sender, $self'master) & __tact_address_neq($ctx'sender, $self'linker))) {
var ($sinit'code, $sinit'data) = $__gen_TONBWallet_init_child(__tact_context_sys, $self'master, $msg'from);
throw_unless(4429, __tact_address_eq($contractAddress(($sinit'code, $sinit'data)), $ctx'sender));
}
@ -345,31 +358,31 @@ _ $__gen_get_get_wallet_data() method_id(97026) {
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), ());
return (($self'balance, $self'owner, $self'master, $self'linker), ());
}
(((int, slice, slice)), ()) $__gen_TONBWallet_receive_TokenBurn((int, slice, slice) $self, (int, int, slice, slice) $msg) impure {
var ($self'balance, $self'owner, $self'master) = $self;
(((int, slice, slice, slice)), ()) $__gen_TONBWallet_receive_TokenBurn((int, slice, slice, slice) $self, (int, int, slice, slice) $msg) impure {
var ($self'balance, $self'owner, $self'master, $self'linker) = $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) | __tact_address_eq($ctx'sender, $self'master)));
throw_unless(4429, ((__tact_address_eq($ctx'sender, $self'owner) | __tact_address_eq($ctx'sender, $self'master)) | __tact_address_eq($ctx'sender, $self'linker)));
$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), ());
return (($self'balance, $self'owner, $self'master, $self'linker), ());
}
((int, slice, slice), ()) $__gen_TONBWallet_receive_bounced((int, slice, slice) $self, slice $msg) impure {
var ($self'balance, $self'owner, $self'master) = $self;
((int, slice, slice, slice), ()) $__gen_TONBWallet_receive_bounced((int, slice, slice, slice) $self, slice $msg) impure {
var ($self'balance, $self'owner, $self'master, $self'linker) = $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), ());
return (($self'balance, $self'owner, $self'master, $self'linker), ());
}
@ -433,5 +446,5 @@ _ supported_interfaces() method_id {
}
_ get_abi_ipfs() {
return "ipfs://QmdeQibxp6Bp8gtTKCziJsCfzaEpbxC4zCEomnBb1nCyer";
return "ipfs://QmWqpvx8PLAjtTJAa4RuwzEXeejSonT37BiA5HxjDFbLvM";
}

145
sources/output/jetton_TONBWallet.code.fif

@ -181,13 +181,13 @@ PROGRAM{
}>
__gen_write_TokenTransferInternal PROCREF:<{
395134233 PUSHINT
s0 s7 XCHG2
s0 s8 XCHG2
32 STU
s1 s5 XCHG
s1 s6 XCHG
64 STU
s0 s3 XCHG2
s0 s4 XCHG2
STGRAMS
SWAP
ROT
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address_opt INLINECALLDICT
@ -195,10 +195,16 @@ PROGRAM{
STGRAMS
SWAP
STSLICER
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
__gen_writecell_TokenTransferInternal PROCREF:<{
NEWC
6 -ROLL
7 -ROLL
__gen_write_TokenTransferInternal INLINECALLDICT
ENDC
}>
@ -215,7 +221,14 @@ PROGRAM{
__tact_load_address_opt INLINECALLDICT
SWAP
LDGRAMS
s5 s5 XCPU
DUP
LDREF
SWAP
CTOS
__tact_load_address_opt INLINECALLDICT
NIP
s1 s7 XCHG
s1 s6 XCHG
s1 s5 XCHG
s1 s4 XCHG
s3 s3 s0 XCHG3
@ -285,13 +298,19 @@ PROGRAM{
ENDC
}>
__gen_write_TONBWallet PROCREF:<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
__gen_read_TONBWallet PROCREF:<{
257 PUSHINT
@ -299,6 +318,13 @@ PROGRAM{
__tact_load_address INLINECALLDICT
SWAP
__tact_load_address INLINECALLDICT
SWAP
LDREF
SWAP
CTOS
__tact_load_address_opt INLINECALLDICT
NIP
s1 s4 XCHG
s3 s3 s0 XCHG3
}>
__gen_StateInit_get_code PROCINLINE:<{
@ -313,14 +339,14 @@ PROGRAM{
SWAP
__tact_context_sys SETGLOB
__gen_read_TONBWallet INLINECALLDICT
1 3 BLKDROP2
1 4 BLKDROP2
}>
__gen_store_TONBWallet PROCREF:<{
NEWC
__tact_context_sys GETGLOB
SWAP
STREF
3 -ROLL
4 -ROLL
__gen_write_TONBWallet INLINECALLDICT
ENDC
c4 POP
@ -443,11 +469,13 @@ PROGRAM{
1 RSHIFT#
}>
$__gen_TONBWallet_init PROC:<{
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
__gen_write_TONBWallet INLINECALLDICT
ENDC
}>
@ -471,6 +499,7 @@ PROGRAM{
$__gen_TONBWallet_init CALLDICT
}>
$__gen_TONBWallet_get_wallet_data PROC:<{
DROP
__tact_context_sys GETGLOB
s1 s2 PUSH2
$__gen_TONBWallet_init_child CALLDICT
@ -485,17 +514,17 @@ PROGRAM{
2 2 BLKDROP2
__tact_context_get INLINECALLDICT
4429 PUSHINT
s3 s11 PUSH2
s3 s12 PUSH2
__tact_address_eq INLINECALLDICT
THROWANYIFNOT
s11 s7 XCPU
s12 s7 XCPU
SUB
62972 PUSHINT
OVER
-1 GTINT
THROWANYIFNOT
s3 s3 s0 XCHG3
s3 s11 PUXC
s3 s12 PUXC
$__gen_Context_readForwardFee CALLDICT
1 PUSHINT
s4 PUSH
@ -515,7 +544,7 @@ PROGRAM{
GREATER
THROWANYIFNOT
__tact_context_sys GETGLOB
s0 s6 s3 XCPUXC
s0 s7 s3 XCPUXC
$__gen_TONBWallet_init_child CALLDICT
2DUP
$contractAddress CALLDICT
@ -523,38 +552,50 @@ PROGRAM{
s7 s6 XCHG2
0 PUSHINT
64 PUSHINT
s11 PUSH
s12 s2 s8 PUXC2
s1 s8 XCHG
PUSHNULL
s13 PUSH
s3 s14 XCPU
s0 s3 XCHG
s9 s10 s9 XCHG3
__gen_writecell_TokenTransferInternal INLINECALLDICT
s5 s6 XCHG
s3 s4 XCHG
-ROT
$send CALLDICT
}>
$__gen_TONBWallet_receive_TokenTransferInternal PROC:<{
__tact_context_get INLINECALLDICT
s2 s10 PUSH2
s11 PUSH
ISNULL
IF:<{
s11 POP
s3 s10 XCHG
}>ELSE<{
s4 POP
}>
s1 s11 PUSH2
__tact_address_neq INLINECALLDICT
s2 s11 PUSH2
__tact_address_neq INLINECALLDICT
AND
IF:<{
__tact_context_sys GETGLOB
s11 s8 PUSH2
s12 s8 PUSH2
$__gen_TONBWallet_init_child CALLDICT
SWAP
4429 PUSHINT
s0 s2 XCHG
$contractAddress CALLDICT
s4 PUSH
s3 PUSH
__tact_address_eq INLINECALLDICT
THROWANYIFNOT
}>
s12 s8 XCPU
s13 s8 XCPU
ADD
62972 PUSHINT
OVER
-1 GTINT
THROWANYIFNOT
OVER
s13 PUSH
__tact_my_balance INLINECALLDICT
OVER
SUB
@ -568,12 +609,10 @@ PROGRAM{
s6 PUSH
0 GTINT
IF:<{
s4 s13 XCHG2
s3 s3 s0 XCHG3
s14 s4 XCHG2
$__gen_Context_readForwardFee CALLDICT
s3 s(-1) PUXC
ADD
s1 s10 XCHG
SUB
FALSE
0 PUSHINT
@ -581,20 +620,20 @@ PROGRAM{
s8 s1 s3 XCHG3
s7 s4 XCHG2
__gen_writecell_TokenNotification INLINECALLDICT
s8 PUSH
s9 PUSH
s4 s6 XCHG
s3 s1 s3 XCHG3
s5 s5 XCHG2
PUSHNULL
PUSHNULL
$send CALLDICT
s0 s5 XCHG2
s0 s6 XCHG2
}>ELSE<{
s7 s13 XCHG
s7 s14 XCHG
s8 s9 XCHG2
8 BLKDROP
}>
s5 PUSH
s6 PUSH
ISNULL
NOT
s2 PUSH
@ -602,19 +641,19 @@ PROGRAM{
AND
IF:<{
FALSE
s0 s6 XCHG
s0 s7 XCHG
__tact_not_null CALLDICT
0 PUSHINT
s0 s4 XCHG
__gen_writecell_TokenExcesses INLINECALLDICT
s4 s7 XCHG
s4 s8 XCHG
s3 s3 s0 XCHG3
s1 s7 XCHG
s1 s8 XCHG
PUSHNULL
PUSHNULL
$send CALLDICT
}>ELSE<{
s5 POP
s6 POP
2DROP
}>
}>
@ -622,20 +661,23 @@ PROGRAM{
2DROP
__tact_context_get INLINECALLDICT
4429 PUSHINT
s3 s8 PUSH2
s3 s9 PUSH2
__tact_address_eq INLINECALLDICT
s4 s9 PUSH2
__tact_address_eq INLINECALLDICT
OR
s4 s8 PUSH2
__tact_address_eq INLINECALLDICT
OR
THROWANYIFNOT
s8 s4 XCPU
s9 s4 XCPU
SUB
62972 PUSHINT
OVER
-1 GTINT
THROWANYIFNOT
s3 s3 s0 XCHG3
s3 s8 PUXC
s3 s9 PUXC
$__gen_Context_readForwardFee CALLDICT
16059 PUSHINT
SWAP
@ -650,9 +692,9 @@ PROGRAM{
0 PUSHINT
s0 s3 XCHG
64 PUSHINT
s3 s6 s6 XCPU2
s3 s7 s7 XCPU2
__gen_writecell_TokenBurnNotification INLINECALLDICT
s3 s0 s4 XC2PU
s3 s0 s5 XC2PU
s3 s3 XCHG2
PUSHNULL
PUSHNULL
@ -677,9 +719,9 @@ PROGRAM{
OR
s1 s2 XCHG
THROWANYIFNOT
s1 s3 XCHG
s1 s4 XCHG
ADD
s0 s2 XCHG
s0 s3 XCHG
}>
recv_internal PROC:<{
0 PUSHINT
@ -713,7 +755,7 @@ PROGRAM{
IFJMP:<{
DROP
__gen_load_TONBWallet INLINECALLDICT
3 ROLL
4 ROLL
$__gen_TONBWallet_receive_bounced CALLDICT
__gen_store_TONBWallet INLINECALLDICT
}>
@ -723,9 +765,10 @@ PROGRAM{
IFJMP:<{
DROP
__gen_load_TONBWallet INLINECALLDICT
s0 s3 XCHG
s0 s4 XCHG
__gen_read_TokenTransfer INLINECALLDICT
s7 POP
s9 s10 XCHG
s8 s9 XCHG
s7 s8 XCHG
6 ROLL
@ -738,12 +781,13 @@ PROGRAM{
IFJMP:<{
DROP
__gen_load_TONBWallet INLINECALLDICT
s0 s3 XCHG
s0 s4 XCHG
__gen_read_TokenTransferInternal INLINECALLDICT
s6 POP
s7 POP
s9 s10 XCHG
s8 s9 XCHG
s7 s8 XCHG
s6 s7 XCHG
5 ROLL
6 ROLL
$__gen_TONBWallet_receive_TokenTransferInternal CALLDICT
__gen_store_TONBWallet INLINECALLDICT
}>
@ -751,9 +795,10 @@ PROGRAM{
EQUAL
IFJMP:<{
__gen_load_TONBWallet INLINECALLDICT
s0 s3 XCHG
s0 s4 XCHG
__gen_read_TokenBurn INLINECALLDICT
s4 POP
s6 s7 XCHG
s5 s6 XCHG
s4 s5 XCHG
3 ROLL
@ -769,6 +814,6 @@ PROGRAM{
209778528950190195973528115415557644819 PUSHINT
}>
get_abi_ipfs PROC:<{
x{697066733a2f2f516d64655169627870364270386774544b437a694a7343667a614570627843347a43456f6d6e4262316e43796572} PUSHSLICE
x{697066733a2f2f516d577170767838504c416a74544a4161345275777a455865656a536f6e5433374269413548786a4446624c764d} PUSHSLICE
}>
}END>c

359
sources/output/jetton_TONBWallet.code.rev.fif

@ -48,26 +48,61 @@ SETCP0
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 3 BLKDROP2
1 4 BLKDROP2
}> CALLREF
1 3 BLKSWAP
1 4 BLKSWAP
42 CALLDICT
<{
NEWC
2 GETGLOBVAR
s0 s1 XCHG
STREF
3 1 BLKSWAP
4 1 BLKSWAP
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
c4 POP
@ -93,11 +128,29 @@ SETCP0
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 3 BLKDROP2
1 4 BLKDROP2
}> CALLREF
s0 s3 XCHG
s0 s4 XCHG
<{
32 LDU
s0 s1 XCHG
@ -140,6 +193,7 @@ SETCP0
s3 s3 s0 XCHG3
}> CALLREF
s7 POP
s9 s10 XCHG
s8 s9 XCHG
s7 s8 XCHG
1 6 BLKSWAP
@ -149,15 +203,32 @@ SETCP0
2 GETGLOBVAR
s0 s1 XCHG
STREF
3 1 BLKSWAP
4 1 BLKSWAP
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
c4 POP
@ -182,11 +253,29 @@ SETCP0
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 3 BLKDROP2
1 4 BLKDROP2
}> CALLREF
s0 s3 XCHG
s0 s4 XCHG
<{
32 LDU
s0 s1 XCHG
@ -212,30 +301,66 @@ SETCP0
IFELSE
s0 s1 XCHG
LDGRAMS
s5 s5 XCPU
s0 PUSH
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s7 XCHG
s1 s6 XCHG
s1 s5 XCHG
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
s6 POP
s7 POP
s9 s10 XCHG
s8 s9 XCHG
s7 s8 XCHG
s6 s7 XCHG
1 5 BLKSWAP
1 6 BLKSWAP
40 CALLDICT
<{
NEWC
2 GETGLOBVAR
s0 s1 XCHG
STREF
3 1 BLKSWAP
4 1 BLKSWAP
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
c4 POP
@ -259,11 +384,29 @@ SETCP0
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 3 BLKDROP2
1 4 BLKDROP2
}> CALLREF
s0 s3 XCHG
s0 s4 XCHG
<{
32 LDU
s0 s1 XCHG
@ -291,6 +434,7 @@ SETCP0
s3 s3 s0 XCHG3
}> CALLREF
s4 POP
s6 s7 XCHG
s5 s6 XCHG
s4 s5 XCHG
1 3 BLKSWAP
@ -300,15 +444,32 @@ SETCP0
2 GETGLOBVAR
s0 s1 XCHG
STREF
3 1 BLKSWAP
4 1 BLKSWAP
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
c4 POP
@ -487,19 +648,38 @@ SETCP0
1 RSHIFT
36:
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
@ -529,6 +709,7 @@ SETCP0
36 CALLDICT
38:
s0 POP
2 GETGLOBVAR
s1 s2 PUSH2
37 CALLDICT
@ -539,17 +720,17 @@ SETCP0
1 GETGLOBVAR
4 UNTUPLE
4429 PUSHINT
s3 s11 PUSH2
s3 s12 PUSH2
SDEQ
THROWANYIFNOT
s11 s7 XCPU
s12 s7 XCPU
SUB
62972 PUSHINT
s1 PUSH
-1 GTINT
THROWANYIFNOT
s3 s3 s0 XCHG3
s3 s11 PUXC
s3 s12 PUXC
35 CALLDICT
1 PUSHINT
s4 PUSH
@ -570,7 +751,7 @@ SETCP0
GREATER
THROWANYIFNOT
2 GETGLOBVAR
0 6 3 XCPUXC
0 7 3 XCPUXC
37 CALLDICT
2DUP
33 CALLDICT
@ -578,21 +759,23 @@ SETCP0
s7 s6 XCHG2
0 PUSHINT
64 PUSHINT
s11 PUSH
12 2 8 PUXC2
s1 s8 XCHG
PUSHNULL
s13 PUSH
s3 s14 XCPU
s0 s3 XCHG
s9 s10 s9 XCHG3
<{
NEWC
6 1 BLKSWAP
7 1 BLKSWAP
<{
395134233 PUSHINT
s0 s7 XCHG2
s0 s8 XCHG2
32 STU
s1 s5 XCHG
s1 s6 XCHG
64 STU
s0 s3 XCHG2
s0 s4 XCHG2
STGRAMS
s0 s1 XCHG
ROT
STSLICER
s0 s1 XCHG
s0 PUSH
@ -611,40 +794,70 @@ SETCP0
STGRAMS
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
}> CALLREF
s5 s6 XCHG
s3 s4 XCHG
ROTREV
34 CALLDICT
40:
1 GETGLOBVAR
4 UNTUPLE
s2 s10 PUSH2
s11 PUSH
ISNULL
<{
s11 POP
s3 s10 XCHG
}> PUSHCONT
<{
s4 POP
}> PUSHCONT
IFELSE
s1 s11 PUSH2
SDEQ
NOT
s2 s11 PUSH2
SDEQ
NOT
AND
<{
2 GETGLOBVAR
s11 s8 PUSH2
s12 s8 PUSH2
37 CALLDICT
s0 s1 XCHG
4429 PUSHINT
s0 s2 XCHG
33 CALLDICT
s4 PUSH
s3 PUSH
SDEQ
THROWANYIFNOT
}> PUSHCONT
IF
s12 s8 XCPU
s13 s8 XCPU
ADD
62972 PUSHINT
s1 PUSH
-1 GTINT
THROWANYIFNOT
s1 PUSH
s13 PUSH
BALANCE
0 INDEX
s1 PUSH
@ -659,12 +872,10 @@ SETCP0
s6 PUSH
0 GTINT
<{
s4 s13 XCHG2
s3 s3 s0 XCHG3
s14 s4 XCHG2
35 CALLDICT
s3 s-1 PUXC
ADD
s1 s10 XCHG
SUB
0 PUSHINT
0 PUSHINT
@ -689,22 +900,22 @@ SETCP0
}> CALLREF
ENDC
}> CALLREF
s8 PUSH
s9 PUSH
s4 s6 XCHG
s3 s1 s3 XCHG3
s5 s5 XCHG2
PUSHNULL
PUSHNULL
34 CALLDICT
s0 s5 XCHG2
s0 s6 XCHG2
}> PUSHCONT
<{
s7 s13 XCHG
s7 s14 XCHG
s8 s9 XCHG2
8 BLKDROP
}> PUSHCONT
IFELSE
s5 PUSH
s6 PUSH
ISNULL
NOT
s2 PUSH
@ -712,7 +923,7 @@ SETCP0
AND
<{
0 PUSHINT
s0 s6 XCHG
s0 s7 XCHG
2 CALLDICT
0 PUSHINT
s0 s4 XCHG
@ -727,35 +938,41 @@ SETCP0
}> CALLREF
ENDC
}> CALLREF
s4 s7 XCHG
s4 s8 XCHG
s3 s3 s0 XCHG3
s1 s7 XCHG
s1 s8 XCHG
PUSHNULL
PUSHNULL
34 CALLDICT
}> IFREFELSEREF
s5 POP
2DROP
}> PUSHCONT
<{
s6 POP
2DROP
}> PUSHCONT
IFELSE
41:
2DROP
1 GETGLOBVAR
4 UNTUPLE
4429 PUSHINT
s3 s8 PUSH2
s3 s9 PUSH2
SDEQ
s4 s9 PUSH2
SDEQ
OR
s4 s8 PUSH2
SDEQ
OR
THROWANYIFNOT
s8 s4 XCPU
s9 s4 XCPU
SUB
62972 PUSHINT
s1 PUSH
-1 GTINT
THROWANYIFNOT
s3 s3 s0 XCHG3
s3 s8 PUXC
s3 s9 PUXC
35 CALLDICT
16059 PUSHINT
s0 s1 XCHG
@ -770,7 +987,7 @@ SETCP0
0 PUSHINT
s0 s3 XCHG
64 PUSHINT
3 6 6 XCPU2
3 7 7 XCPU2
<{
NEWC
4 1 BLKSWAP
@ -800,7 +1017,7 @@ SETCP0
}> CALLREF
ENDC
}> CALLREF
3 0 4 XC2PU
3 0 5 XC2PU
s3 s3 XCHG2
PUSHNULL
PUSHNULL
@ -825,9 +1042,9 @@ SETCP0
OR
s1 s2 XCHG
THROWANYIFNOT
s1 s3 XCHG
s1 s4 XCHG
ADD
s0 s2 XCHG
s0 s3 XCHG
get_wallet_data:
<{
@ -844,9 +1061,27 @@ SETCP0
s0 s1 XCHG
LDMSGADDR
s0 s1 XCHG
s0 s1 XCHG
LDREF
s0 s1 XCHG
CTOS
LDMSGADDR
s1 PUSH
2 PLDU
0 NEQINT
<{
s0 s1 XCHG
}> PUSHCONT
<{
s1 POP
PUSHNULL
}> PUSHCONT
IFELSE
s1 POP
s1 s4 XCHG
s3 s3 s0 XCHG3
}> CALLREF
1 3 BLKDROP2
1 4 BLKDROP2
}> CALLREF
38 CALLDICT
30 CALLDICT

BIN
sources/output/jetton_TONBWallet.init.boc

Binary file not shown.

20
sources/output/jetton_TONBWallet.init.fc

@ -8,22 +8,34 @@ builder __tact_store_address(builder b, slice address) inline {
return b;
}
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master) = v;
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);
}
}
builder __gen_write_TONBWallet(builder build_0, (int, slice, slice, slice) v) inline_ref {
var (v'balance, v'owner, v'master, v'linker) = v;
build_0 = build_0.store_int(v'balance, 257);
build_0 = __tact_store_address(build_0, v'owner);
build_0 = __tact_store_address(build_0, v'master);
var build_1 = begin_cell();
build_1 = __tact_store_address_opt(build_1, v'linker);
build_0 = store_ref(build_0, build_1.end_cell());
return build_0;
}
cell $__gen_TONBWallet_init(cell sys', slice $master, slice $owner) {
var (($self'balance, $self'owner, $self'master)) = (null(), null(), null());
var (($self'balance, $self'owner, $self'master, $self'linker)) = (null(), null(), null(), null());
$self'balance = 0;
$self'owner = $owner;
$self'master = $master;
var b' = begin_cell();
b' = b'.store_ref(sys');
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master));
b' = __gen_write_TONBWallet(b', ($self'balance, $self'owner, $self'master, $self'linker));
return b'.end_cell();
}

27
sources/output/jetton_TONBWallet.init.fif

@ -1,6 +1,7 @@
PROGRAM{
DECLPROC __tact_verify_address
DECLPROC __tact_store_address
DECLPROC __tact_store_address_opt
DECLPROC __gen_write_TONBWallet
DECLPROC $__gen_TONBWallet_init
107886 DECLMETHOD init
@ -14,21 +15,41 @@ PROGRAM{
__tact_store_address PROCINLINE:<{
STSLICER
}>
__tact_store_address_opt PROCINLINE:<{
DUP
ISNULL
IF:<{
DROP
0 PUSHINT
SWAP
2 STU
}>ELSE<{
__tact_store_address INLINECALLDICT
}>
}>
__gen_write_TONBWallet PROCREF:<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
SWAP
__tact_store_address INLINECALLDICT
SWAP
__tact_store_address INLINECALLDICT
NEWC
ROT
__tact_store_address_opt INLINECALLDICT
ENDC
SWAP
STREF
}>
$__gen_TONBWallet_init PROC:<{
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
__gen_write_TONBWallet INLINECALLDICT
ENDC
}>

29
sources/output/jetton_TONBWallet.init.rev.fif

@ -2,25 +2,44 @@ SETCP0
(:methods
recv_internal:
4:
5:
PUSHNULL
0 PUSHINT
s0 s3 XCHG
s0 s4 XCHG
NEWC
STREF
s3 s1 s3 XCHG3
s0 s4 XCHG
s3 s3 XCHG2
<{
s2 s3 XCHG2
s3 s4 XCHG2
257 PUSHINT
STIX
s0 s1 XCHG
STSLICER
s0 s1 XCHG
STSLICER
NEWC
ROT
s0 PUSH
ISNULL
<{
s0 POP
0 PUSHINT
s0 s1 XCHG
2 STU
}> PUSHCONT
<{
STSLICER
}> PUSHCONT
IFELSE
ENDC
s0 s1 XCHG
STREF
}> CALLREF
ENDC
107886:
4 CALLDICT
5 CALLDICT
) 19 DICTPUSHCONST
DICTIGETJMPZ
11 THROWARG

14
sources/output/jetton_TONBWallet.md

@ -1,6 +1,6 @@
# TACT Compilation Report
Contract: TONBWallet
BOC Size: 1324 bytes
BOC Size: 1422 bytes
# Types
Total Types: 18
@ -22,8 +22,8 @@ TLB: `token_transfer#0f8a7ea5 queryId:uint64 amount:coins destination:address re
Signature: `TokenTransfer{queryId:uint64,amount:coins,destination:address,responseDestination:Maybe address,customPayload:Maybe ^cell,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
## TokenTransferInternal
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>}`
TLB: `token_transfer_internal#178d4519 queryId:uint64 amount:coins from:address responseAddress:Maybe address forwardTonAmount:coins forwardPayload:remainder<slice> setLinker:Maybe address = TokenTransferInternal`
Signature: `TokenTransferInternal{queryId:uint64,amount:coins,from:address,responseAddress:Maybe address,forwardTonAmount:coins,forwardPayload:remainder<slice>,setLinker:Maybe address}`
## TokenNotification
TLB: `token_notification#7362d09c queryId:uint64 amount:coins from:address forwardPayload:remainder<slice> = TokenNotification`
@ -53,14 +53,14 @@ Signature: `JettonData{totalSupply:int257,mintable:bool,owner:address,content:Ma
TLB: `_ balance:int257 owner:address master:address walletCode:^cell = JettonWalletData`
Signature: `JettonWalletData{balance:int257,owner:address,master:address,walletCode:^cell}`
## InitLinker
TLB: `init_linker#453d436d owner:address = InitLinker`
Signature: `InitLinker{owner:address}`
## SetLinkerNeighbor
TLB: `set_linker_neighbor#b3fcf4c1 neighbor:Maybe address = SetLinkerNeighbor`
Signature: `SetLinkerNeighbor{neighbor:Maybe address}`
## InitLinker
TLB: `init_linker#67c08154 neighbor:Maybe address walletAmount:int257 walletCode:^cell walletData:^cell walletAddress:address responseAddress:Maybe address = InitLinker`
Signature: `InitLinker{neighbor:Maybe address,walletAmount:int257,walletCode:^cell,walletData:^cell,walletAddress:address,responseAddress:Maybe address}`
## WithdrawalRequests
TLB: `_ addresses:dict<int, address> amounts:dict<int, int> n_requests:int257 = WithdrawalRequests`
Signature: `WithdrawalRequests{addresses:dict<int, address>,amounts:dict<int, int>,n_requests:int257}`

2
sources/output/jetton_TONBWallet.pkg

File diff suppressed because one or more lines are too long

108
sources/output/jetton_TONBWallet.ts

@ -247,6 +247,7 @@ export type TokenTransferInternal = {
responseAddress: Address | null;
forwardTonAmount: bigint;
forwardPayload: Cell;
setLinker: Address | null;
}
export function storeTokenTransferInternal(src: TokenTransferInternal) {
@ -259,6 +260,9 @@ export function storeTokenTransferInternal(src: TokenTransferInternal) {
b_0.storeAddress(src.responseAddress);
b_0.storeCoins(src.forwardTonAmount);
b_0.storeBuilder(src.forwardPayload.asBuilder());
let b_1 = new Builder();
b_1.storeAddress(src.setLinker);
b_0.storeRef(b_1.endCell());
};
}
@ -271,7 +275,9 @@ export function loadTokenTransferInternal(slice: Slice) {
let _responseAddress = sc_0.loadMaybeAddress();
let _forwardTonAmount = sc_0.loadCoins();
let _forwardPayload = sc_0.asCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let sc_1 = sc_0.loadRef().beginParse();
let _setLinker = sc_1.loadMaybeAddress();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function loadTupleTokenTransferInternal(source: TupleReader) {
@ -281,7 +287,8 @@ function loadTupleTokenTransferInternal(source: TupleReader) {
let _responseAddress = source.readAddressOpt();
let _forwardTonAmount = source.readBigNumber();
let _forwardPayload = source.readCell();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload };
let _setLinker = source.readAddressOpt();
return { $$type: 'TokenTransferInternal' as const, queryId: _queryId, amount: _amount, from: _from, responseAddress: _responseAddress, forwardTonAmount: _forwardTonAmount, forwardPayload: _forwardPayload, setLinker: _setLinker };
}
function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
@ -292,6 +299,7 @@ function storeTupleTokenTransferInternal(source: TokenTransferInternal) {
builder.writeAddress(source.responseAddress);
builder.writeNumber(source.forwardTonAmount);
builder.writeSlice(source.forwardPayload);
builder.writeAddress(source.setLinker);
return builder.build();
}
@ -668,85 +676,113 @@ function dictValueParserJettonWalletData(): DictionaryValue<JettonWalletData> {
}
}
}
export type InitLinker = {
$$type: 'InitLinker';
owner: Address;
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
neighbor: Address | null;
}
export function storeInitLinker(src: InitLinker) {
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(1161642861, 32);
b_0.storeAddress(src.owner);
b_0.storeUint(3019699393, 32);
b_0.storeAddress(src.neighbor);
};
}
export function loadInitLinker(slice: Slice) {
export function loadSetLinkerNeighbor(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 1161642861) { throw Error('Invalid prefix'); }
let _owner = sc_0.loadAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function loadTupleInitLinker(source: TupleReader) {
let _owner = source.readAddress();
return { $$type: 'InitLinker' as const, owner: _owner };
function loadTupleSetLinkerNeighbor(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
}
function storeTupleInitLinker(source: InitLinker) {
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
let builder = new TupleBuilder();
builder.writeAddress(source.owner);
builder.writeAddress(source.neighbor);
return builder.build();
}
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
},
parse: (src) => {
return loadInitLinker(src.loadRef().beginParse());
return loadSetLinkerNeighbor(src.loadRef().beginParse());
}
}
}
export type SetLinkerNeighbor = {
$$type: 'SetLinkerNeighbor';
export type InitLinker = {
$$type: 'InitLinker';
neighbor: Address | null;
walletAmount: bigint;
walletCode: Cell;
walletData: Cell;
walletAddress: Address;
responseAddress: Address | null;
}
export function storeSetLinkerNeighbor(src: SetLinkerNeighbor) {
export function storeInitLinker(src: InitLinker) {
return (builder: Builder) => {
let b_0 = builder;
b_0.storeUint(3019699393, 32);
b_0.storeUint(1740669268, 32);
b_0.storeAddress(src.neighbor);
b_0.storeInt(src.walletAmount, 257);
b_0.storeRef(src.walletCode);
b_0.storeRef(src.walletData);
b_0.storeAddress(src.walletAddress);
let b_1 = new Builder();
b_1.storeAddress(src.responseAddress);
b_0.storeRef(b_1.endCell());
};
}
export function loadSetLinkerNeighbor(slice: Slice) {
export function loadInitLinker(slice: Slice) {
let sc_0 = slice;
if (sc_0.loadUint(32) !== 3019699393) { throw Error('Invalid prefix'); }
if (sc_0.loadUint(32) !== 1740669268) { throw Error('Invalid prefix'); }
let _neighbor = sc_0.loadMaybeAddress();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = sc_0.loadIntBig(257);
let _walletCode = sc_0.loadRef();
let _walletData = sc_0.loadRef();
let _walletAddress = sc_0.loadAddress();
let sc_1 = sc_0.loadRef().beginParse();
let _responseAddress = sc_1.loadMaybeAddress();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function loadTupleSetLinkerNeighbor(source: TupleReader) {
function loadTupleInitLinker(source: TupleReader) {
let _neighbor = source.readAddressOpt();
return { $$type: 'SetLinkerNeighbor' as const, neighbor: _neighbor };
let _walletAmount = source.readBigNumber();
let _walletCode = source.readCell();
let _walletData = source.readCell();
let _walletAddress = source.readAddress();
let _responseAddress = source.readAddressOpt();
return { $$type: 'InitLinker' as const, neighbor: _neighbor, walletAmount: _walletAmount, walletCode: _walletCode, walletData: _walletData, walletAddress: _walletAddress, responseAddress: _responseAddress };
}
function storeTupleSetLinkerNeighbor(source: SetLinkerNeighbor) {
function storeTupleInitLinker(source: InitLinker) {
let builder = new TupleBuilder();
builder.writeAddress(source.neighbor);
builder.writeNumber(source.walletAmount);
builder.writeCell(source.walletCode);
builder.writeCell(source.walletData);
builder.writeAddress(source.walletAddress);
builder.writeAddress(source.responseAddress);
return builder.build();
}
function dictValueParserSetLinkerNeighbor(): DictionaryValue<SetLinkerNeighbor> {
function dictValueParserInitLinker(): DictionaryValue<InitLinker> {
return {
serialize: (src, buidler) => {
buidler.storeRef(beginCell().store(storeSetLinkerNeighbor(src)).endCell());
buidler.storeRef(beginCell().store(storeInitLinker(src)).endCell());
},
parse: (src) => {
return loadSetLinkerNeighbor(src.loadRef().beginParse());
return loadInitLinker(src.loadRef().beginParse());
}
}
}
@ -923,9 +959,9 @@ function dictValueParserWithdraw(): DictionaryValue<Withdraw> {
}
}
async function TONBWallet_init(master: Address, owner: Address) {
const __init = 'te6ccgEBBwEAPQABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AkAAdQBE9OAHkZiGJ7Z5kwGABpQI4EBAc8AAc8WAc8W';
const __code = 'te6ccgECNAEABSAAART/APSkE/S88sgLAQIBYgIDAgLKBgcCASAEBQERv9gW2eeBN4D0EQBxvd6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcAgEgCAkCAUgVFgIBYgoLAAOnQASJRwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo8JMNs8VQLwKts84CCCEA+KfqW64wIgghAXjUUZuoERMMDQALQgbvLQgIAyIw2zwD2zw3EIkQeFUF8CfbPBEOEwQ2j5Ew2zwD2zw2EHgQZ1UE8CjbPOCCEFlfB7y6EQ8TEABs0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB0gABkdSSbQHi+gBRZhYVFEMwAFjTHwGCEBeNRRm68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gH6AFFVFRRDMAMuj5DbPAPbPDQQVhBFVQLwKds84DDywIIREhMBFu1E0NQB+GLbPGwTFABM0x8BghBZXwe8uvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIUQzABGMj4QgHMVSDbPMntVCMAHIEBAdcA+kABAfpAAUMwAgEgFxgCAUgoKQIBIBkaAgEgHyAAS1cFnIcAHLAXMBywFwAcsAEszMyfkAyHIBywFwAcsAEsoHy//J0IAgEgGxwC9zIcQHKAVAHAcoAcAHKAlAFzxZQA/oCcAHKaCNusyVus7GORn8BygDIcAHKAHABygAkbrOafwHKAATwAlAEzJY0A3ABygDiJG6zmn8BygAE8AJQBMyWNANwAcoA4nABygACfwHKAALJWMyXMzMBcAHKAOIhbrPjD8kB+wCAdHgAlGwx+gAxcdch+gAx+gAwpwOrAIAASfwHKAAHwAgHMAAoxcAHKAAIBICEiAgEgJCUBExwA8jMQxPbPMmAjAE0AtD0BDBtAYFghAGAEPQPb6Hy4IcBgWCEIgKAEPQXyPQAyUAD8CSAAGlAjgQEBzwABzxYBzxYADz4QlMS8CUwgAbkbCL4QW8kgRFNUzvHBfL0UbehggD1/CHC//L0QzBSPPAjcSTCAJIwct6BPrsCqIIJMS0AoIIImJaAoBK88vT4QlQgZPAlXPAhf1B2cIBAK1RMORjbPBBWEDRZ8CKAmAQzIVVDbPMknAE6CEBeNRRlQB8sfFcs/UAP6AgHPFgEgbpUwcAHLAZLPFuIB+gIBzxYCASAqKwBPSAINch0x/TPzH6ADCBNVIighAXjUUZugOCEHvdl966E7ES8vQToAKAPxPhBbyRTKscFs44S+EJTuPAlAYERTQLwISTHBfL03lHIoIIA9fwhwv/y9CH4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAjqFQTUMw8CNSMKAaoXBwKEgTUHTbPCgQRkMTUFVtbfAiUAWWEH1QiV8I4iVusyLCALDjD4CwtLgGZFv4QW8kgRFNUzjHBVNIxwWx8vRRhKGCAPX8IcL/8vRDMFI58COBPrsBggkxLQCgggiYloCgErzy9H9wA4BAVDNm2zxUEwRQM21t8CKAyAQzIVTDbPMkvASJwBvACcATbPBBHQzAXbW3wIjAABDVbACyCEHNi0JxQBcsfE8s/AfoCAc8WAc8WAQrIAds8yTEAFoIQ1TJ221jLH8s/AQzIVTDbPMkzAECCEHvdl95QBcsfE8s/AfoCAc8WASBulTBwAcsBks8W4g==';
const __system = 'te6cckECNgEABSoAAQHAAQEFoMEJAgEU/wD0pBP0vPLICwMCAWIHBAIBIAYFAHG93owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwThO6PAB8tmwHk/kHVks1lEJwBEb/YFtnngTeA9DQCAsonCAIBSBYJAgFICwoAT0gCDXIdMf0z8x+gAwgTVSIoIQF41FGboDghB73ZfeuhOxEvL0E6ACgCASAPDAGZFv4QW8kgRFNUzjHBVNIxwWx8vRRhKGCAPX8IcL/8vRDMFI58COBPrsBggkxLQCgggiYloCgErzy9H9wA4BAVDNm2zxUEwRQM21t8CKANAQzIVTDbPMkOAECCEHvdl95QBcsfE8s/AfoCAc8WASBulTBwAcsBks8W4gPxPhBbyRTKscFs44S+EJTuPAlAYERTQLwISTHBfL03lHIoIIA9fwhwv/y9CH4J28QIaGCCJiWgGa2CKGCCJiWgKChJsIAjqFQTUMw8CNSMKAaoXBwKEgTUHTbPCgQRkMTUFVtbfAiUAWWEH1QiV8I4iVusyLCALDjD4BQREAAENVsBInAG8AJwBNs8EEdDMBdtbfAiEgEKyAHbPMkTABaCENUydttYyx/LPwEMyFUw2zzJFQAsghBzYtCcUAXLHxPLPwH6AgHPFgHPFgIBICAXAgEgHRgCASAcGQG5Gwi+EFvJIERTVM7xwXy9FG3oYIA9fwhwv/y9EMwUjzwI3EkwgCSMHLegT67AqiCCTEtAKCCCJiWgKASvPL0+EJUIGTwJVzwIX9QdnCAQCtUTDkY2zwQVhA0WfAigGgEMyFVQ2zzJGwBOghAXjUUZUAfLHxXLP1AD+gIBzxYBIG6VMHABywGSzxbiAfoCAc8WAA8+EJTEvAlMIAIBIB8eAE0AtD0BDBtAYFghAGAEPQPb6Hy4IcBgWCEIgKAEPQXyPQAyUAD8CSABExwA8jMQxPbPMmAzAgEgJiECASAjIgAlGwx+gAxcdch+gAx+gAwpwOrAIAL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPACUATMljQDcAHKAOIkbrOafwHKAATwAlAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AICUkAAoxcAHKAAASfwHKAAHwAgHMAEtXBZyHABywFzAcsBcAHLABLMzMn5AMhyAcsBcAHLABLKB8v/ydCAIBICkoAAOnQAIBYisqAAtCBu8tCAgEiUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKPCTDbPFUC8CrbPOAgghAPin6luuMCIIIQF41FGbqDQyMCwENo+RMNs8A9s8NhB4EGdVBPAo2zzgghBZXwe8ujQvMi0DLo+Q2zwD2zw0EFYQRVUC8CnbPOAw8sCCNC4yAEzTHwGCEFlfB7y68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4hRDMABY0x8BghAXjUUZuvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB+gBRVRUUQzADIjDbPAPbPDcQiRB4VQXwJ9s8NDEyAGzTHwGCEA+KfqW68uCB0z/6APpAAQH6QCHXCwHDAJEBkjFt4gHSAAGR1JJtAeL6AFFmFhUUQzABGMj4QgHMVSDbPMntVDMAGlAjgQEBzwABzxYBzxYBFu1E0NQB+GLbPGwTNQAcgQEB1wD6QAEB+kABQzCAxrR7';
const __init = 'te6ccgEBBwEAUAABFP8A9KQT9LzyyAsBAgFiAgMCAs0EBQAJoUrd4AsAAdQBF2W1wBMjMBFAz2zzJgYAPFA0gQEBzwABzxYBzxbIWCBulTBwAcsBks8W4skBzA==';
const __code = 'te6ccgECMwEABYIAART/APSkE/S88sgLAQIBYgIDAgLKBgcCASAEBQERv9gW2eeBN4D0EQBxvd6ME4LnYerpZXPY9CdhzrJUKNs0E4TusalpWyPlmRadeW/vixHME4TujwAfLZsB5P5B1ZLNZRCcAgEgCAkCAUgVFgIBYgoLAAOnQASJRwIddJwh+VMCDXCx/eAtDTAwFxsMABkX+RcOIB+kAiUGZvBPhhAo8JMNs8VQPwKts84CCCEA+KfqW64wIgghAXjUUZuoERMMDQALQgbvLQgIAyYw2zwE2zw3EJoQiRB4VQXwJ9s8EQ4TBDqPkzDbPATbPDcQmhCJEHhVBfAo2zzgghBZXwe8uhEPExAAbNMfAYIQD4p+pbry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iAdIAAZHUkm0B4voAUWYWFRRDMAB+0x8BghAXjUUZuvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB+gAg1AHQ+kAh1wsBwwCRAZIxbeIxFxYVFEMwAzKPkts8BNs8NBBnEFYQRVUC8CnbPOAw8sCCERITARbtRNDUAfhi2zxsFBQATNMfAYIQWV8HvLry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iFEMwARjI+EIBzFUw2zzJ7VQjAESBAQHXAPpAAQH6QAEB1AHQ+kAh1wsBwwCRAZIxbeIxFEMwAgEgFxgCAUgoKQIBIBkaAgEgHyAAS1cFnIcAHLAXMBywFwAcsAEszMyfkAyHIBywFwAcsAEsoHy//J0IAgEgGxwC9zIcQHKAVAHAcoAcAHKAlAFzxZQA/oCcAHKaCNusyVus7GORn8BygDIcAHKAHABygAkbrOafwHKAATwAlAEzJY0A3ABygDiJG6zmn8BygAE8AJQBMyWNANwAcoA4nABygACfwHKAALJWMyXMzMBcAHKAOIhbrPjD8kB+wCAdHgAlGwx+gAxcdch+gAx+gAwpwOrAIAASfwHKAAHwAgHMAAoxcAHKAAIBICEiAgEgJCUBFxtcATIzARQM9s8yYCMATQC0PQEMG0BgWCEAYAQ9A9vofLghwGBYIQiAoAQ9BfI9ADJQAPwJIAA8UDSBAQHPAAHPFgHPFshYIG6VMHABywGSzxbiyQHMABEMPhCUxLwJTCABuRsIvhBbySBEU1TPMcF8vRRx6GCAPX8IcL/8vRDMFI98CNxJMIAkjBy3oE+uwKoggkxLQCgggiYloCgErzy9PhCVCB08CVc8CF/UHZwgEBtLVE+A0mp2zwQVlnwIoCYBDMhVYNs8yScAcIIQF41FGVAIyx8Wyz9QBPoCWM8WASBulTBwAcsBks8W4gH6AgHPFshYIG6VMHABywGSzxbiyQHMAgEgKisAT0gCDXIdMf0z8x+gAwgTVSIoIQF41FGboDghB73ZfeuhOxEvL0FKADgC9z4QW8kK26TOxA6kTTiUxvHBbNTK8cFs7COEvhCU8jwJQGBEU0C8CEjxwXy9N5R2KCCAPX8IcL/8vQt+CdvECGhggiYloBmtgihggiYloCgoSbCAI6eUOTwI1IwoKFwcChIE1B02zwpEEZDE1BVbW3wIlAGlhB+UIlfCOKAsLQGjFv4QW8kgRFNUznHBVNJxwWxU0jHBbHy9FGUoYIA9fwhwv/y9EMwUjrwI4E+uwGCCTEtAKCCCJiWgKASvPL0f3ADgEBUM3fbPFQTBVAzbW3wIoDEBDMhVMNs8yS4BPCZusyLCALCOkXAH8AJwBNs8EEhDMBhtbfAikjZb4i8ALIIQc2LQnFAFyx8Tyz8B+gIBzxYBzxYBCsgB2zzJMAAWghDVMnbbWMsfyz8BDMhVMNs8yTIAQIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbi';
const __system = 'te6cckECNQEABYwAAQHAAQEFoMEJAgEU/wD0pBP0vPLICwMCAWIHBAIBIAYFAHG93owTgudh6ullc9j0J2HOslQo2zQThO6xqWlbI+WZFp15b++LEcwThO6PAB8tmwHk/kHVks1lEJwBEb/YFtnngTeA9DMCAsomCAIBSBUJAgFICwoAT0gCDXIdMf0z8x+gAwgTVSIoIQF41FGboDghB73ZfeuhOxEvL0FKADgCASAPDAGjFv4QW8kgRFNUznHBVNJxwWxU0jHBbHy9FGUoYIA9fwhwv/y9EMwUjrwI4E+uwGCCTEtAKCCCJiWgKASvPL0f3ADgEBUM3fbPFQTBVAzbW3wIoA0BDMhVMNs8yQ4AQIIQe92X3lAFyx8Tyz8B+gIBzxYBIG6VMHABywGSzxbiAvc+EFvJCtukzsQOpE04lMbxwWzUyvHBbOwjhL4QlPI8CUBgRFNAvAhI8cF8vTeUdigggD1/CHC//L0LfgnbxAhoYIImJaAZrYIoYIImJaAoKEmwgCOnlDk8CNSMKChcHAoSBNQdNs8KRBGQxNQVW1t8CJQBpYQflCJXwjigExABPCZusyLCALCOkXAH8AJwBNs8EEhDMBhtbfAikjZb4hEBCsgB2zzJEgAWghDVMnbbWMsfyz8BDMhVMNs8yRQALIIQc2LQnFAFyx8Tyz8B+gIBzxYBzxYCASAfFgIBIBwXAgEgGxgBuRsIvhBbySBEU1TPMcF8vRRx6GCAPX8IcL/8vRDMFI98CNxJMIAkjBy3oE+uwKoggkxLQCgggiYloCgErzy9PhCVCB08CVc8CF/UHZwgEBtLVE+A0mp2zwQVlnwIoBkBDMhVYNs8yRoAcIIQF41FGVAIyx8Wyz9QBPoCWM8WASBulTBwAcsBks8W4gH6AgHPFshYIG6VMHABywGSzxbiyQHMABEMPhCUxLwJTCACASAeHQBNALQ9AQwbQGBYIQBgBD0D2+h8uCHAYFghCICgBD0F8j0AMlAA/AkgARcbXAEyMwEUDPbPMmAyAgEgJSACASAiIQAlGwx+gAxcdch+gAx+gAwpwOrAIAL3MhxAcoBUAcBygBwAcoCUAXPFlAD+gJwAcpoI26zJW6zsY5GfwHKAMhwAcoAcAHKACRus5p/AcoABPACUATMljQDcAHKAOIkbrOafwHKAATwAlAEzJY0A3ABygDicAHKAAJ/AcoAAslYzJczMwFwAcoA4iFus+MPyQH7AICQjAAoxcAHKAAASfwHKAAHwAgHMAEtXBZyHABywFzAcsBcAHLABLMzMn5AMhyAcsBcAHLABLKB8v/ydCAIBICgnAAOnQAIBYiopAAtCBu8tCAgEiUcCHXScIflTAg1wsf3gLQ0wMBcbDAAZF/kXDiAfpAIlBmbwT4YQKPCTDbPFUD8CrbPOAgghAPin6luuMCIIIQF41FGbqDMxLysEOo+TMNs8BNs8NxCaEIkQeFUF8CjbPOCCEFlfB7y6My4xLAMyj5LbPATbPDQQZxBWEEVVAvAp2zzgMPLAgjMtMQBM0x8BghBZXwe8uvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIUQzAAftMfAYIQF41FGbry4IHTP/oA+kABAfpAIdcLAcMAkQGSMW3iAfoAINQB0PpAIdcLAcMAkQGSMW3iMRcWFRRDMAMmMNs8BNs8NxCaEIkQeFUF8CfbPDMwMQBs0x8BghAPin6luvLggdM/+gD6QAEB+kAh1wsBwwCRAZIxbeIB0gABkdSSbQHi+gBRZhYVFEMwARjI+EIBzFUw2zzJ7VQyADxQNIEBAc8AAc8WAc8WyFggbpUwcAHLAZLPFuLJAcwBFu1E0NQB+GLbPGwUNABEgQEB1wD6QAEB+kABAdQB0PpAIdcLAcMAkQGSMW3iMRRDMGRj05c=';
let systemCell = Cell.fromBase64(__system);
let builder = new TupleBuilder();
builder.writeCell(systemCell);

51
sources/tests/__snapshots__/jetton.spec.ts.snap

@ -1,6 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`jetton should deploy 1`] = `
exports[`jetton should deploy and deposit the wallet with the correct sum of money 1`] = `
[
{
"type": "deploy",
@ -13,70 +13,45 @@ exports[`jetton should deploy 1`] = `
},
"bounce": true,
"from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P",
"to": "kQBbN1ES7aHOD-YQDRZ0b8_HFJFJtu99cbmeu79JtaT7mbCh",
"to": "kQCM9AmnDVgUtUtKjTYQmBC1nKt5dR8EsRWQvtvzNws01ZJu",
"type": "internal",
"value": 1100000000n,
"value": 1200000000n,
},
"type": "received",
},
{
"gasUsed": 22607n,
"gasUsed": 36303n,
"type": "processed",
},
{
"messages": [
{
"body": {
"cell": "x{178D4519000000000000000043B9ACA00800B66EA225DB439C1FCC201A2CE8DF9F8E2922936DDEFAE3733D777E936B49F73300023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_}",
"cell": "x{B3FCF4C12_}",
"type": "cell",
},
"bounce": false,
"from": "kQBbN1ES7aHOD-YQDRZ0b8_HFJFJtu99cbmeu79JtaT7mbCh",
"to": "kQBUyXAApVkXHsyW_DjETpmWFHRLXdFHz5XELjf5v7e3oluU",
"from": "kQCM9AmnDVgUtUtKjTYQmBC1nKt5dR8EsRWQvtvzNws01ZJu",
"to": "kQB2vHcaIyjKkO_JMeWRZ8QN_zBjgfX7OHflzG9vrE3cUH-F",
"type": "internal",
"value": 182761000n,
"value": 13474000n,
},
],
"type": "sent",
},
]
`;
exports[`jetton should deploy and deposit the correct sub of money 1`] = `
[
{
"type": "deploy",
},
{
"message": {
"body": {
"cell": "x{21EEB60743B9ACA00}",
"type": "cell",
},
"bounce": true,
"from": "kQAI-3FJVc_ywSuY4vq0bYrzR7S4Och4y7bTU_i5yLOB3A6P",
"to": "kQBbN1ES7aHOD-YQDRZ0b8_HFJFJtu99cbmeu79JtaT7mbCh",
"type": "internal",
"value": 1100000000n,
},
"type": "received",
},
{
"gasUsed": 22607n,
"type": "processed",
},
{
"messages": [
{
"body": {
"cell": "x{178D4519000000000000000043B9ACA00800B66EA225DB439C1FCC201A2CE8DF9F8E2922936DDEFAE3733D777E936B49F73300023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_}",
"cell": "x{178D4519000000000000000043B9ACA0080119E8134E1AB0296A96951A6C2130216B3956F2EA3E09622B217DB7E66E1669AB00023EDC525573FCB04AE638BEAD1B62BCD1ED2E0E721E32EDB4D4FE2E722CE07702_}
x{800ED78EE3446519521DF9263CB22CF881BFE60C703EBF670EFCB98DEDF589BB8A1_}",
"type": "cell",
},
"bounce": false,
"from": "kQBbN1ES7aHOD-YQDRZ0b8_HFJFJtu99cbmeu79JtaT7mbCh",
"to": "kQBUyXAApVkXHsyW_DjETpmWFHRLXdFHz5XELjf5v7e3oluU",
"from": "kQCM9AmnDVgUtUtKjTYQmBC1nKt5dR8EsRWQvtvzNws01ZJu",
"to": "kQCs7NEVQDI566FHvxACpYud6bZ40nPH4s_v39XOEbexYPMS",
"type": "internal",
"value": 182761000n,
"value": 21584000n,
},
],
"type": "sent",

22
sources/tests/jetton.spec.ts

@ -3,33 +3,37 @@ import { ContractSystem } from "ton-emulator";
import {TONB} from '../output/jetton_TONB';
import { default_content } from '../utils/config';
import { TONBWallet } from '../output/jetton_TONBWallet';
import { beginCell } from 'ton-core';
describe('jetton', () => {
it('should deploy and deposit the correct sum of money', async () => {
it('should deploy and deposit the wallet with the correct sum of money', async () => {
// Create jetton
let system = await ContractSystem.create();
let owner = system.treasure('owner');
let contract = system.open(await TONB.fromInit(owner.address, default_content));
let tracker = system.track(contract.address);
let wallet_contract = system.open(await TONBWallet.fromInit(contract.address, owner.address));
// Mint
await contract.send(owner, { value: toNano('1.1') }, { $$type: 'Deposit', amount: toNano('1') });
await contract.send(owner, { value: toNano('1.2') }, { $$type: 'Deposit', amount: toNano('1') });
let log = await system.run();
await system.run();
let events = tracker.events();
expect(events).toMatchSnapshot();
let addr = Address.parse((events[3] as any).messages[0].to);
let wallet_contract_2 = system.contract(addr);
let wdata = (await wallet_contract_2.get(97026, [])) as any;
expect(wdata.stack.items[0].value).toEqual(1000000000n);
let addr = Address.parse((events[4] as any).messages[0].to);
let wallet_contract = system.contract(addr);
let wdata = ((await wallet_contract.get(97026, [])) as any).stack.items;
expect(wdata[0].value).toEqual(1000000000n);
let linker_contract = system.contract(Address.parse((events[3] as any).messages[0].to));
let linker_owner = ((await linker_contract.get('owner', [])) as any).stack.items[0];
expect(linker_owner.cell.toBoc()).toEqual(beginCell().storeAddress(addr).endCell().toBoc());
// Check owner
expect((await contract.getOwner()).toString()).toEqual(owner.address.toString());
// Data
let data = await contract.getGetJettonData();
});
});

14
sources/wallet.tact

@ -1,5 +1,8 @@
import "@stdlib/ownable";
import "./messages";
import "./linker";
@interface("org.ton.jetton.wallet")
contract TONBWallet {
@ -10,6 +13,7 @@ contract TONBWallet {
balance: Int;
owner: Address;
master: Address;
linker: Address?;
init(master: Address, owner: Address) {
self.balance = 0;
@ -49,7 +53,8 @@ contract TONBWallet {
from: self.owner,
responseAddress: self.owner,
forwardTonAmount: msg.forwardTonAmount,
forwardPayload: msg.forwardPayload
forwardPayload: msg.forwardPayload,
setLinker: null
}.toCell(),
code: init.code,
data: init.data
@ -60,7 +65,10 @@ contract TONBWallet {
// Check sender
let ctx: Context = context();
if (ctx.sender != self.master) {
if (self.linker == null) {
self.linker = msg.setLinker;
}
if (ctx.sender != self.master && ctx.sender != self.linker) {
let sinit: StateInit = initOf TONBWallet(self.master, msg.from);
require(contractAddress(sinit) == ctx.sender, "Invalid sender");
}
@ -109,7 +117,7 @@ contract TONBWallet {
// Check sender
let ctx: Context = context();
require(ctx.sender == self.owner || ctx.sender == self.master, "Invalid sender");
require(ctx.sender == self.owner || ctx.sender == self.master || ctx.sender == self.linker, "Invalid sender");
// Update balance
self.balance = self.balance - msg.amount;

Loading…
Cancel
Save