wan-ton-sdk 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/Bridge.compile.ts +8 -0
  2. package/Bridge.ts +645 -0
  3. package/Bridge.ts.org +647 -0
  4. package/Fake.compile.ts +8 -0
  5. package/GroupApprove.compile.ts +6 -0
  6. package/GroupApprove.ts +274 -0
  7. package/JettonMinter.compile.ts +5 -0
  8. package/JettonMinter.ts +135 -0
  9. package/JettonWallet.compile.ts +5 -0
  10. package/JettonWallet.ts +127 -0
  11. package/README.md +24 -0
  12. package/Signature.compile.ts +6 -0
  13. package/Signature.ts +105 -0
  14. package/address.compile.ts +8 -0
  15. package/client/1.json +1730 -0
  16. package/client/client.ts +73 -0
  17. package/client/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  18. package/client/log/wan-ton-sdk.out.2024-12-19 +0 -0
  19. package/code/decode.spec.ts +81 -0
  20. package/code/encode-decode.ts +622 -0
  21. package/code/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
  22. package/code/log/wan-ton-sdk.out.2025-01-15 +0 -0
  23. package/code/log/wan-ton-sdk.out.2025-01-20 +0 -0
  24. package/code/userLock.ts +291 -0
  25. package/common.ts +62 -0
  26. package/config/config-ex.ts +25 -0
  27. package/config/config.ts +1 -0
  28. package/const/const-value.ts +33 -0
  29. package/contractAccess/bridgeAccess.ts +60 -0
  30. package/contractAccess/groupApproveAccess.ts +59 -0
  31. package/data/EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs.json +7348 -0
  32. package/db/Db.spec.ts +193 -0
  33. package/db/Db.ts +736 -0
  34. package/db/DbAccess.spec.ts +23 -0
  35. package/db/DbAccess.ts +174 -0
  36. package/db/common.ts +94 -0
  37. package/db/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  38. package/db/log/wan-ton-sdk.out.2025-04-21 +0 -0
  39. package/event/getEvents.ts +441 -0
  40. package/event/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  41. package/event/log/wan-ton-sdk.out.2024-12-19 +0 -0
  42. package/example/0:1.txt +1 -0
  43. package/example/AddToken-ex.ts +148 -0
  44. package/example/README.md +21 -0
  45. package/example/addSmg-ex.ts +78 -0
  46. package/example/addTokenPair-ex.ts +73 -0
  47. package/example/compileContract-ex.ts +10 -0
  48. package/example/converTranToTonTran.ts +43 -0
  49. package/example/createDb-ex.ts +8 -0
  50. package/example/dbFeedTrans-ex.ts +20 -0
  51. package/example/delTokenPair-ex.ts +63 -0
  52. package/example/deploy-ex.ts +68 -0
  53. package/example/getAllEvents-ex.ts +61 -0
  54. package/example/getAllTrans.ts +32 -0
  55. package/example/getContractState-ex.ts +33 -0
  56. package/example/getEventByHash-ex.ts +39 -0
  57. package/example/getEvents-ex.ts +55 -0
  58. package/example/getJettonInfo-ex.ts +44 -0
  59. package/example/getTokenPair-ex.ts +47 -0
  60. package/example/getTransByRange-ex.ts +81 -0
  61. package/example/getTransaction-ex.ts +62 -0
  62. package/example/isTranSuccess-ex.ts +33 -0
  63. package/example/locateTx-ex.ts +44 -0
  64. package/example/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +55 -0
  65. package/example/log/wan-ton-sdk.out.2025-04-21 +447 -0
  66. package/example/log/wan-ton-sdk.out.2025-04-22 +1918 -0
  67. package/example/log/wan-ton-sdk.out.2025-04-23 +4216 -0
  68. package/example/log/wan-ton-sdk.out.2025-04-24.gz +0 -0
  69. package/example/log/wan-ton-sdk.out.2025-04-25 +46814 -0
  70. package/example/log/wan-ton-sdk.out.2025-04-27.gz +0 -0
  71. package/example/log/wan-ton-sdk.out.2025-04-28 +4966 -0
  72. package/example/log/wan-ton-sdk.out.2025-04-29 +1328 -0
  73. package/example/log/wan-ton-sdk.out.2025-04-30 +9 -0
  74. package/example/mintToken-ex.ts +82 -0
  75. package/example/setFee-ex.ts +82 -0
  76. package/example/setFeeProxy.ts +70 -0
  77. package/example/smgRelease-ex.ts +173 -0
  78. package/example/upgradeBridgeSc-ex.ts +49 -0
  79. package/example/userLock-ex.ts +78 -0
  80. package/fee/fee.ts +23 -0
  81. package/index.ts +67 -0
  82. package/jest.config.ts +9 -0
  83. package/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
  84. package/log/wan-ton-sdk.out.2025-04-21 +0 -0
  85. package/log/wan-ton-sdk.out.2025-04-30 +10 -0
  86. package/opcodes.ts +58 -0
  87. package/package.json +34 -0
  88. package/publish.sh +78 -0
  89. package/sign/buildHash.ts +47 -0
  90. package/sign/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  91. package/sign/log/wan-ton-sdk.out.2025-04-14 +3 -0
  92. package/sign/rawTrans.spec.ts +117 -0
  93. package/sign/rawTrans.ts +122 -0
  94. package/sign/tools-secp256k1.js +210 -0
  95. package/testData/JettonMinter.compile.func.ts +8 -0
  96. package/testData/JettonWallet.compile.func.ts +8 -0
  97. package/testData/addressList.json +6 -0
  98. package/testData/bridge.compile.func.ts +8 -0
  99. package/testData/bridge.compiled.json +1 -0
  100. package/testData/contractAddress.json +7 -0
  101. package/testData/jettonTokenInfo.json +14 -0
  102. package/testData/prvlist.json +6 -0
  103. package/testData/smg.json +5 -0
  104. package/testData/tokenInfo.json +23 -0
  105. package/transResult/transResult.ts +621 -0
  106. package/tsconfig.json +19 -0
  107. package/utils/.compiled.json +1 -0
  108. package/utils/compileContract.ts +60 -0
  109. package/utils/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
  110. package/utils/log/wan-ton-sdk.out.2025-01-08 +0 -0
  111. package/utils/logger.spec.ts +14 -0
  112. package/utils/logger.ts +96 -0
  113. package/utils/utils.spec.ts +21 -0
  114. package/utils/utils.ts +295 -0
  115. package/wallet/balance.ts +29 -0
  116. package/wallet/jetton.spec.ts +27 -0
  117. package/wallet/jetton.ts +159 -0
  118. package/wallet/walletContract.spec.ts +111 -0
  119. package/wallet/walletContract.ts +105 -0
@@ -0,0 +1,9 @@
1
+ 2025-04-30T03:43:15.696Z [info]: getClient config {"network":{"network":"testnet"},"usingDbCache":true,"urls":[{}]}
2
+ 2025-04-30T03:43:22.074Z [info]: getClient config {"network":{"network":"testnet"},"usingDbCache":true,"urls":[{}]}
3
+ 2025-04-30T03:43:42.086Z [info]: getClient config {"network":{"network":"testnet"},"usingDbCache":true,"urls":[{}]}
4
+ 2025-04-30T03:44:02.101Z [info]: getClient config {"network":{"network":"testnet"},"usingDbCache":true,"urls":[{}]}
5
+ 2025-04-30T03:44:22.115Z [info]: getClient config {"network":{"network":"testnet"},"usingDbCache":true,"urls":[{}]}
6
+ 2025-04-30T03:45:48.578Z [info]: getClient config {"network":{"network":"mainnet"},"urls":[{}]}
7
+ 2025-04-30T03:47:36.261Z [info]: getClient config {"network":{"network":"mainnet"},"urls":[{}]}
8
+ 2025-04-30T03:54:14.580Z [info]: getClient config {"network":{"network":"mainnet"},"urls":[{}]}
9
+ 2025-04-30T03:55:11.559Z [info]: getClient config {"network":{"network":"mainnet"},"urls":[{}]}
@@ -0,0 +1,82 @@
1
+ import {configTestnet,configMainnet} from "../config/config-ex";
2
+
3
+ import {Address, Cell, toNano, TupleItemInt, fromNano, beginCell, Sender} from '@ton/core';
4
+
5
+ import {Bridge} from '../Bridge';
6
+ import {TON_COIN_ACCOUT, BIP44_CHAINID,TON_COIN_ACCOUNT_STR,BIP44_WANCHAIN_CHAINID} from '../const/const-value';
7
+
8
+ import {getSenderByPrvKey, getTonAddrByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
9
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
10
+
11
+ const smgCfg = require('../testData/smg.json');
12
+
13
+ const args = process.argv.slice(2);
14
+ let tokenType = args[0];
15
+ let amount = args[1];
16
+ const prvList = require('../testData/prvlist')
17
+
18
+ let deployer =null,smgFeeProxy=null,oracleAdmin = null,robotAdmin = null;
19
+ let alicePrv,bobPrv = null;
20
+ let aliceAddr:Address
21
+ let bobAddr :Address
22
+ let aliceWallet, bobWallet;
23
+ let client = null;
24
+
25
+ const scAddresses = require('../testData/contractAddress.json');
26
+ import { BridgeAccess } from "../contractAccess/bridgeAccess";
27
+ import {getQueryID} from "../utils/utils";
28
+
29
+
30
+ let contractProvider =null;
31
+ async function init(){
32
+ await wanTonSdkInit(configMainnet);
33
+ await wanTonSdkInit(configTestnet);
34
+ deployer = await getWalletByPrvKey(Buffer.from(prvList[0],'hex'));
35
+ aliceWallet = await getWalletByPrvKey(Buffer.from(prvList[1],'hex'));
36
+ bobWallet = await getWalletByPrvKey(Buffer.from(prvList[2],'hex'));
37
+
38
+ aliceAddr = aliceWallet.address;
39
+ bobAddr = bobWallet.address;
40
+
41
+ client = await getClient();
42
+ console.log("client=>",client);
43
+ }
44
+
45
+ const schnorr = require("../sign/tools-secp256k1.js");
46
+
47
+ let tokenInfo = require('../testData/tokenInfo.json')
48
+
49
+ import{JettonMinter} from "../JettonMinter";
50
+ import{JettonWallet} from "../JettonWallet";
51
+ import {CoinBalance,TokenBalance} from "../wallet/balance";
52
+ import {TonClient} from "@ton/ton";
53
+ import {TON_FEE} from "../fee/fee";
54
+
55
+
56
+ async function mintToken(client:TonClient,tokenType: string, to: Address, amount: bigint) {
57
+ let jettonTokenAddr = tokenInfo[tokenType].dstTokenAcc
58
+ console.log("tokenAddress = %s, tokenType = %s,to= %s,amount=%d",jettonTokenAddr,tokenType,to.toString(),amount)
59
+ console.log("before mintToken to:%s, coin:%d,token:%d", to.toString(), await CoinBalance(client, to), await TokenBalance(client, Address.parse(jettonTokenAddr), to));
60
+ let via = await getSenderByPrvKey(client, Buffer.from(prvList[0], 'hex'));
61
+
62
+
63
+ let jettonMinter = JettonMinter.createFromAddress(jettonTokenAddr);
64
+ let contractProvider = client.provider(jettonTokenAddr);
65
+
66
+ let mintResult = await jettonMinter.sendMint(contractProvider, via, to, amount, TON_FEE.FWD_FEE_MINT_JETTON, TON_FEE.TOTAL_FEE_MINT_JETTON)
67
+ console.log("mintResult",mintResult);
68
+ console.log("after mintToken to:%s, coin:%d,token:%d", to.toString(), await CoinBalance(client, to), await TokenBalance(client, Address.parse(jettonTokenAddr), to));
69
+
70
+ }
71
+
72
+ async function main(){
73
+ console.log("Entering main function");
74
+ await init();
75
+ await mintToken(client,tokenType,aliceAddr,toNano(amount));
76
+ await mintToken(client,tokenType,bobAddr,toNano(amount));
77
+ };
78
+
79
+ main();
80
+
81
+ // ts-node mintToken-ex.ts tokenWrapped 1.0
82
+ // ts-node mintToken-ex.ts tokenOrg 1.0
@@ -0,0 +1,82 @@
1
+ import {configTestnet,configMainnet} from "../config/config-ex";
2
+
3
+ import {Address, Cell, toNano, TupleItemInt, fromNano, beginCell, Sender} from '@ton/core';
4
+
5
+ import {Bridge} from '../Bridge';
6
+ import {TON_COIN_ACCOUT, BIP44_CHAINID,TON_COIN_ACCOUNT_STR,BIP44_WANCHAIN_CHAINID} from '../const/const-value';
7
+
8
+ import {getSenderByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
9
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
10
+
11
+ const smgCfg = require('../testData/smg.json');
12
+
13
+ const args = process.argv.slice(2);
14
+ const prvList = require('../testData/prvlist')
15
+
16
+ let deployer =null,smgFeeProxy=null,oracleAdmin = null,robotAdmin = null;
17
+ let client = null;
18
+
19
+ const scAddresses = require('../testData/contractAddress.json');
20
+ import { BridgeAccess } from "../contractAccess/bridgeAccess";
21
+ import {getQueryID} from "../utils/utils";
22
+ import {SandboxContract, TreasuryContract} from "@ton/sandbox";
23
+ import {TON_FEE} from "../fee/fee";
24
+
25
+
26
+ async function init(){
27
+ await wanTonSdkInit(configMainnet);
28
+ await wanTonSdkInit(configTestnet);
29
+ deployer = await getWalletByPrvKey(Buffer.from(prvList[0],'hex'));
30
+ client = await getClient();
31
+ console.log("client=>",client);
32
+ }
33
+
34
+ const schnorr = require("../sign/tools-secp256k1.js");
35
+
36
+ let tokenInfo = require('../testData/tokenInfo.json')
37
+
38
+
39
+ async function setFee(){
40
+ let contractChainFee = toNano('0.01')
41
+ let contractTokenPairFee = toNano('0.02')
42
+ let agentFee = toNano('0.03')
43
+
44
+ let ba = BridgeAccess.create(client,scAddresses.bridgeAddress);
45
+
46
+ // set chain fee
47
+ for(let key of Object.keys(tokenInfo)){
48
+ const queryID=await getQueryID();
49
+ let via = await getSenderByPrvKey(client,Buffer.from(prvList[0],'hex'));
50
+ let ret = await ba.writeContract('sendSetChainFee',via,{
51
+ srcChainId:tokenInfo[key].srcChainId,
52
+ dstChainId:tokenInfo[key].dstChainId,
53
+ contractFee:Number(contractChainFee),
54
+ agentFee:Number(agentFee),
55
+ value: TON_FEE.TRANS_FEE_NORMAL,
56
+ queryID,
57
+ });
58
+
59
+ ret = await ba.writeContract('sendSetTokenPairFee',via,{
60
+ tokenPairID:tokenInfo[key].tokenPairId,
61
+ fee:Number(contractTokenPairFee),
62
+ value: TON_FEE.TRANS_FEE_NORMAL,
63
+ queryID,
64
+ });
65
+
66
+ let tokenPairFee = await ba.readContract('getTokenPairFee',[tokenInfo[key].tokenPairId])
67
+ console.log("tokenpairIdFee",tokenInfo[key].tokenPairId, tokenPairFee);
68
+
69
+ let chainFee = await ba.readContract('getChainFee',[tokenInfo[key].srcChainId,tokenInfo[key].dstChainId])
70
+ console.log("chainFee","srcChainId", tokenInfo[key].srcChainId,"desChainId",tokenInfo[key].dstChainId,chainFee);
71
+ }
72
+ }
73
+
74
+ async function main(){
75
+ console.log("Entering main function");
76
+ await init();
77
+ await setFee();
78
+ };
79
+
80
+ main();
81
+
82
+ // ts-node setFee-ex.ts
@@ -0,0 +1,70 @@
1
+ import {configTestnet,configMainnet} from "../config/config-ex";
2
+
3
+ import {Address, Cell, toNano, TupleItemInt, fromNano, beginCell, Sender} from '@ton/core';
4
+
5
+ import {Bridge} from '../Bridge';
6
+ import {TON_COIN_ACCOUT, BIP44_CHAINID,TON_COIN_ACCOUNT_STR,BIP44_WANCHAIN_CHAINID} from '../const/const-value';
7
+
8
+ import {getSenderByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
9
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
10
+
11
+ const smgCfg = require('../testData/smg.json');
12
+
13
+ const args = process.argv.slice(2);
14
+ const prvList = require('../testData/prvlist')
15
+
16
+ let deployer =null,feeProxy=null,oracleAdmin = null,robotAdmin = null;
17
+ let client = null;
18
+
19
+ const scAddresses = require('../testData/contractAddress.json');
20
+ import { BridgeAccess } from "../contractAccess/bridgeAccess";
21
+ import {getQueryID, sleep} from "../utils/utils";
22
+ import {SandboxContract, TreasuryContract} from "@ton/sandbox";
23
+ import {TON_FEE} from "../fee/fee";
24
+
25
+
26
+ async function init(){
27
+ await wanTonSdkInit(configMainnet);
28
+ await wanTonSdkInit(configTestnet);
29
+ deployer = await getWalletByPrvKey(Buffer.from(prvList[0],'hex'));
30
+ client = await getClient();
31
+ console.log("client=>",client);
32
+
33
+ feeProxy = await getWalletByPrvKey(Buffer.from(prvList[4],'hex'));
34
+ }
35
+
36
+ const schnorr = require("../sign/tools-secp256k1.js");
37
+
38
+ let tokenInfo = require('../testData/tokenInfo.json')
39
+
40
+ const setFeeGasValue = TON_FEE.TRANS_FEE_NORMAL
41
+
42
+ async function setFeeProxy(){
43
+
44
+ let ba = BridgeAccess.create(client,scAddresses.bridgeAddress);
45
+
46
+ // set chain fee
47
+
48
+ const queryID=await getQueryID();
49
+ let via = await getSenderByPrvKey(client,Buffer.from(prvList[0],'hex'));
50
+ let ret = await ba.writeContract('sendSetFeeProxy',via,{
51
+ feeProxy:feeProxy.address, // EQAqx2ITzIiFmFdXx4DNsGo5jr0Ju7Q3pL9X_qzK11klOsEx
52
+ value: setFeeGasValue,
53
+ queryID,
54
+ });
55
+
56
+ await sleep(3000)
57
+ let configInfo = await ba.readContract('getCrossConfig',[]);
58
+ console.log("configInfo",configInfo);
59
+
60
+ }
61
+
62
+ async function main(){
63
+ console.log("Entering main function");
64
+ await init();
65
+ await setFeeProxy();
66
+ };
67
+
68
+ main();
69
+
70
+ // ts-node setFeeProxy.ts
@@ -0,0 +1,173 @@
1
+ import {TonClient} from "@ton/ton";
2
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
3
+ import {getSenderByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
4
+ import {buildUserLockMessages} from "../code/userLock";
5
+ import {Address, toNano} from "@ton/core";
6
+ import {BridgeAccess} from "../contractAccess/bridgeAccess";
7
+ import {getQueryID, sleep} from "../utils/utils";
8
+ import {common} from "../common";
9
+ import {BIP44_CHAINID, TON_COIN_ACCOUNT_STR, TON_COIN_ACCOUT} from "../const/const-value";
10
+
11
+ import {getJettonAddress } from "../wallet/jetton";
12
+
13
+ const schnorr = require("../sign/tools-secp256k1.js");
14
+ import * as util from "node:util";
15
+ import {TON_FEE} from "../fee/fee";
16
+
17
+ import {configTestnet,configMainnet} from "../config/config-ex";
18
+ const prvList = require('../testData/prvlist')
19
+ const prvAlice = Buffer.from(prvList[1],'hex');
20
+ const prvBob = Buffer.from(prvList[2],'hex');
21
+
22
+ const scAddresses = require('../testData/contractAddress.json');
23
+
24
+ const smgCfg = require('../testData/smg.json');
25
+ const tokenInfo = require('../testData/tokenInfo.json');
26
+ let smgID = smgCfg.smgId
27
+ let smgReleaseValue = toNano('0.1')
28
+ let bridgeScAddr = scAddresses.bridgeAddress
29
+ let transValueSmgRelease = TON_FEE.TRANS_FEE_SMG_RELEASE
30
+ let smgAgentFee = BigInt(1000); // should get from contract.
31
+ let dstUserAccount = "0xF6eB3CB4b187d3201AfBF96A38e62367325b29F9"
32
+ let aliceSender;
33
+
34
+ let smgConfig = require('../testData/smg.json')
35
+
36
+
37
+ let client = null;
38
+ let aliceWallet,aliceAddressStr,aliceAddress;
39
+ let bobWallet,bobAddress,bobAddressStr;
40
+
41
+ async function init() {
42
+ await wanTonSdkInit(configMainnet);
43
+ await wanTonSdkInit(configTestnet);
44
+ client = await getClient();
45
+ aliceWallet = await getWalletByPrvKey(prvAlice);
46
+ bobWallet = await getWalletByPrvKey(prvBob);
47
+
48
+ aliceAddressStr = aliceWallet.address.toString();
49
+ aliceAddress = aliceWallet.address;
50
+
51
+ bobAddressStr = bobWallet.address.toString();
52
+ bobAddress = bobWallet.address;
53
+ aliceSender = await getSenderByPrvKey(client, prvAlice);
54
+ }
55
+
56
+
57
+ async function getAgentFee(tokenPairID:number,srcChainId:number,dstChainId:number){
58
+ let ba = BridgeAccess.create(client,bridgeScAddr);
59
+ let tokenPairFee = await ba.readContract('getTokenPairFee',[tokenPairID]);
60
+ let chainFee = await ba.readContract('getChainFee',[srcChainId,dstChainId]);
61
+ if(chainFee.agentFee){
62
+ return chainFee.agentFee
63
+ }else{
64
+ return tokenPairFee.agentFee
65
+ }
66
+ }
67
+ const jetton = require('../wallet/jetton');
68
+
69
+ async function getJettonWalletAddr(client:TonClient,tokenAccountAddr:Address,ownerAddress:Address){
70
+ if(tokenAccountAddr.equals(Address.parse(TON_COIN_ACCOUNT_STR))){
71
+ return Address.parse(TON_COIN_ACCOUNT_STR);
72
+ }else{
73
+ return getJettonAddress(client,tokenAccountAddr,ownerAddress);
74
+ }
75
+ }
76
+
77
+ async function buildSmgReleaseParameters(client:TonClient,input:{
78
+ smgID:string,
79
+ tokenPairID:number,
80
+ releaseValue:bigint,
81
+ value:bigint,
82
+ queryID:bigint,
83
+ uniqueID:bigint,
84
+ tokenCoinAccount:Address,
85
+ destAccount:Address,
86
+ fwTonAmount:bigint,
87
+ totalTonAmount:bigint,
88
+ },srcChainId:number,dstChainId:number,bridgeScAddr:Address){
89
+ let bridgeJwAddress = await getJettonWalletAddr(client,input.tokenCoinAccount, bridgeScAddr);
90
+ let agentFee = await getAgentFee(input.tokenPairID,srcChainId,dstChainId);
91
+
92
+ let msgHashResult = common.computeHash(BigInt(BIP44_CHAINID),
93
+ BigInt(input.uniqueID),
94
+ BigInt(input.tokenPairID),
95
+ BigInt(input.releaseValue),
96
+ BigInt(agentFee),
97
+ input.tokenCoinAccount,
98
+ input.destAccount);
99
+ console.log("smgConfig.skSmg=>",smgConfig.skSmg);
100
+ let sig = schnorr.getSecSchnorrSByMsgHash(Buffer.from(smgConfig.skSmg,'hex'),msgHashResult.hashBuf);
101
+ console.log("sig=>",sig);
102
+ const e = BigInt(sig.e);
103
+
104
+ const p = BigInt(sig.p);
105
+ const s = BigInt(sig.s);
106
+
107
+ return {
108
+ value: input.value,
109
+ queryID:input.queryID,
110
+ uniqueID:input.uniqueID,
111
+ smgID:input.smgID,
112
+ tokenPairID:input.tokenPairID,
113
+ releaseValue:input.releaseValue,
114
+ fee:agentFee,
115
+ userAccount: input.destAccount,
116
+ bridgeJettonWalletAddr:bridgeJwAddress,
117
+ e,
118
+ p,
119
+ s,
120
+ fwTonAmount:input.fwTonAmount,
121
+ totalTonAmount:input.totalTonAmount,
122
+ }
123
+ }
124
+
125
+ async function smgRelease(){
126
+ try{
127
+ let transValueSmg : bigint = transValueSmgRelease;
128
+ let ba = BridgeAccess.create(client,bridgeScAddr);
129
+ for(let key of Object.keys(tokenInfo)) {
130
+ console.log("key:",key);
131
+ // if(key.toString().toLowerCase() !== "tokenwrapped"){
132
+ // continue;
133
+ // }
134
+ // if(key.toString().toLowerCase() !== "coin"){
135
+ // continue;
136
+ // }
137
+ // if(key.toString().toLowerCase() !== "tokenOrg".toLowerCase()){
138
+ // continue;
139
+ // }
140
+
141
+ if(key.toString().toLowerCase() !== "coin".toLowerCase()){
142
+ transValueSmg = TON_FEE.TRANS_FEE_USER_LOCK_TOKEN;
143
+ }
144
+
145
+ let smgReleasePara = await buildSmgReleaseParameters(client,{
146
+ smgID:smgConfig.smgId,
147
+ tokenPairID:tokenInfo[key].tokenPairId,
148
+ releaseValue:smgReleaseValue,
149
+ value:transValueSmg,
150
+ queryID:BigInt(await getQueryID()),
151
+ uniqueID:BigInt(await getQueryID()), // should be txHas->bigInt, here is the example.
152
+ tokenCoinAccount:Address.parse(tokenInfo[key].dstTokenAcc),
153
+ //tokenCoinAccount:Address.parseFriendly(tokenInfo.tokenOrg.dstTokenAcc).address,
154
+ destAccount:bobAddress,
155
+ fwTonAmount:TON_FEE.FWD_TON_AMOUNT_TRANSFER_JETTON,
156
+ totalTonAmount:TON_FEE.TOTAL_TON_AMOUNT_TRANSFER_JETTON
157
+ },tokenInfo[key].srcChainId,tokenInfo[key].dstChainId,Address.parse(bridgeScAddr))
158
+ let ret = await ba.writeContract('sendSmgRelease', aliceSender, smgReleasePara)
159
+ await sleep(3000);
160
+ console.log("key = %s, ret of smRelease is %s",key,ret);
161
+ }
162
+
163
+ }catch(e){
164
+ console.log("err =%s",e.Error,e);
165
+ }
166
+ }
167
+ async function main() {
168
+
169
+ await init();
170
+ await smgRelease();
171
+
172
+ }
173
+ main();
@@ -0,0 +1,49 @@
1
+ import {conf } from "../testData/bridge.compile.func"
2
+ let filePath = "../testData/bridge.compiled.json";
3
+ import {doCompile} from "../utils/compileContract";
4
+ import {getSenderByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
5
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
6
+ import {getQueryID} from "../utils/utils";
7
+ import {BridgeAccess} from "../contractAccess/bridgeAccess";
8
+ import {toNano} from "@ton/core";
9
+ import {TON_COIN_ACCOUNT_STR} from "../const/const-value";
10
+ import {TON_FEE} from "../fee/fee";
11
+
12
+ const prvList = require('../testData/prvlist')
13
+
14
+ let client = null;
15
+ let queryID;
16
+ let deployer;
17
+ import {configTestnet,configMainnet} from "../config/config-ex";
18
+
19
+ const scAddresses = require('../testData/contractAddress.json');
20
+ (async function main() {
21
+ await init();
22
+ let ret = await doCompile(conf,filePath);
23
+ if(ret){
24
+ console.log(ret);
25
+ }
26
+
27
+ let newCode = ret.codeCell;
28
+ let ba = BridgeAccess.create(client,scAddresses.bridgeAddress);
29
+ // write contract
30
+ let via = await getSenderByPrvKey(client,Buffer.from(prvList[0],'hex'));
31
+ let opt = {
32
+ sender:via,
33
+ value: TON_FEE.TRANS_FEE_NORMAL,
34
+ queryID,
35
+ code:newCode,
36
+ }
37
+ console.log("opt=>",opt);
38
+ ret = await ba.writeContract('sendUpgradeSC',via,opt);
39
+ console.log("sendUpgradeSC",ret);
40
+
41
+ })()
42
+
43
+ async function init(){
44
+ await wanTonSdkInit(configMainnet);
45
+ await wanTonSdkInit(configTestnet);
46
+ deployer = await getWalletByPrvKey(Buffer.from(prvList[0],'hex'));
47
+ queryID = await getQueryID();
48
+ client = await getClient();
49
+ }
@@ -0,0 +1,78 @@
1
+ import {TonClient} from "@ton/ton";
2
+ import {getClient, TonClientConfig, wanTonSdkInit} from "../client/client";
3
+ import {getSenderByPrvKey, getWalletByPrvKey} from "../wallet/walletContract";
4
+ import {buildUserLockMessages} from "../code/userLock";
5
+ import {toNano} from "@ton/core";
6
+ import {BridgeAccess} from "../contractAccess/bridgeAccess";
7
+ import {sleep} from "../utils/utils";
8
+ import {TON_FEE} from "../fee/fee";
9
+
10
+ import {configTestnet,configMainnet} from "../config/config-ex";
11
+ const prvList = require('../testData/prvlist')
12
+ const prvAlice = Buffer.from(prvList[1],'hex');
13
+ const prvBob = Buffer.from(prvList[2],'hex');
14
+
15
+ const scAddresses = require('../testData/contractAddress.json');
16
+
17
+ const smgCfg = require('../testData/smg.json');
18
+ const tokenInfo = require('../testData/tokenInfo.json');
19
+ let smgID = smgCfg.smgId
20
+ let crossValue = toNano('0.1')
21
+ let bridgeScAddr = scAddresses.bridgeAddress
22
+ //let transValueUserLock = toNano('0.4')
23
+ let transValueUserLock = toNano('1')
24
+ let dstUserAccount = "0xF6eB3CB4b187d3201AfBF96A38e62367325b29F9"
25
+ let aliceSender;
26
+
27
+
28
+
29
+ let client = null;
30
+ let aliceWallet,aliceAddress;
31
+ async function init(){
32
+ await wanTonSdkInit(configMainnet);
33
+ await wanTonSdkInit(configTestnet);
34
+ client = await getClient();
35
+ aliceWallet = await getWalletByPrvKey(prvAlice);
36
+ aliceAddress = aliceWallet.address.toString();
37
+ aliceSender = await getSenderByPrvKey(client,prvAlice);
38
+ }
39
+
40
+ async function userLock(){
41
+ try{
42
+ let transValue:bigint = transValueUserLock;
43
+ let ba = BridgeAccess.create(client,bridgeScAddr);
44
+ for(let key of Object.keys(tokenInfo)) {
45
+ console.log("key:",key);
46
+ // if(key.toString().toLowerCase() !== ("coin").toLowerCase()){
47
+ // continue;
48
+ // }
49
+
50
+ if(key.toString().toLowerCase() !== ("coin").toLowerCase()){
51
+ transValue = TON_FEE.TRANS_FEE_USER_LOCK_TOKEN;
52
+ }
53
+
54
+ let ret = await ba.writeContract('sendUserLock', aliceSender, {
55
+ value: transValue,
56
+ smgID,
57
+ tokenPairID: tokenInfo[key].tokenPairId,
58
+ crossValue,
59
+ dstUserAccount,
60
+ bridgeScAddr,
61
+ client,
62
+ senderAccount: aliceAddress
63
+ })
64
+ await sleep(3000);
65
+ console.log("key = %s, ret of userLock is %s",key,ret);
66
+ }
67
+
68
+ }catch(e){
69
+ console.log("err =%s",e.Error);
70
+ }
71
+ }
72
+ async function main() {
73
+
74
+ await init();
75
+ await userLock();
76
+
77
+ }
78
+ main();
package/fee/fee.ts ADDED
@@ -0,0 +1,23 @@
1
+ //
2
+ import {toNano} from "@ton/core";
3
+ export const TON_FEE = {
4
+ TRANS_FEE_NORMAL : toNano('0.1'),
5
+
6
+ // for mint token
7
+ FWD_FEE_MINT_JETTON: toNano('0.01'),
8
+ TOTAL_FEE_MINT_JETTON: toNano('0.2'),
9
+
10
+ // for deploy contract
11
+ TRANS_FEE_DEPLOY: toNano('0.1'),
12
+
13
+ // for user lock
14
+ TRANS_FEE_USER_LOCK_TOKEN:toNano('1'),
15
+ NOTIFY_FEE_USER_LOCK:toNano('0.8'),
16
+
17
+ // for smg release
18
+ TRANS_FEE_SMG_RELEASE: toNano('0.3'),
19
+ TRANS_FEE_SMG_RELEASE_TOKEN:toNano('0.5'), // for smgRelease, the first tx value
20
+ FWD_TON_AMOUNT_TRANSFER_JETTON:toNano('0.0'), // for smgRelease , send token
21
+ TOTAL_TON_AMOUNT_TRANSFER_JETTON:toNano('0.2'), // for smgRelease , send token
22
+ }
23
+
package/index.ts ADDED
@@ -0,0 +1,67 @@
1
+ export {
2
+ TonClientConfig, getClient,
3
+ } from "./client/client";
4
+
5
+ export {codeTable,} from "./code/encode-decode"
6
+ export {buildUserLockMessages} from "./code/userLock"
7
+ export {getTokenPairInfo} from "./code/userLock"
8
+
9
+ export {
10
+ BIP44_CHAINID, TON_COIN_ACCOUT, TON_COIN_ACCOUNT_STR, WK_CHIANID,
11
+ } from "./const/const-value"
12
+
13
+ export {
14
+ getEvents,
15
+ } from "./event/getEvents"
16
+
17
+ export {
18
+ computeHash,
19
+ } from "./sign/buildHash"
20
+
21
+ export {
22
+ buildInternalMessage,
23
+ buildExternalMessage,
24
+ buildSignData,
25
+ signData,
26
+ buildRawTransaction,
27
+ sendRawTransaction,
28
+ getMsgHash,
29
+ } from "./sign/rawTrans"
30
+
31
+ export {
32
+ TranStepInfo, TranResult, TranPathInfo, getTranResultByMsgHash, getTranResultByTxHash, getTranByMsgHash,
33
+ } from "./transResult/transResult"
34
+
35
+ export {
36
+ CR, compileContract, writeCR, doCompile
37
+ } from "./utils/compileContract"
38
+
39
+ export {
40
+ getRandomTon, BufferrToHexString, HexStringToBuffer, getQueryID, bigIntReviver, bigIntReplacer
41
+ } from "./utils/utils"
42
+
43
+ export {
44
+ getJettonBalance,
45
+ getJettonAddress,
46
+ getJettonData,
47
+ getJettonDataContent,
48
+ buildWrappedJettonContent,
49
+ parseWrappedJettonContent
50
+ } from "./wallet/jetton"
51
+
52
+ export {
53
+ getWalletByMnemonic,
54
+ openWallet,
55
+ getSender,
56
+ getWalletByPrvKey,
57
+ getTonAddrByPrvKey,
58
+ getSenderByPrvKey,
59
+ getWalletAddrByPrvKey,
60
+ openWalletByPrvKey,
61
+ getWalletBySecPrvKey,
62
+ getTonAddrBySecPrvKey,
63
+ getSenderBySecPrvKey,
64
+ openWalletBySecPrvKey,
65
+ getWalletAddrBySecPrvKey,
66
+ isAddrDepolyed
67
+ } from "./wallet/walletContract"
package/jest.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Config } from 'jest';
2
+
3
+ const config: Config = {
4
+ preset: 'ts-jest',
5
+ testEnvironment: 'node',
6
+ testPathIgnorePatterns: ['/node_modules/', '/dist/'],
7
+ };
8
+
9
+ export default config;
@@ -0,0 +1,20 @@
1
+ {
2
+ "keep": {
3
+ "days": true,
4
+ "amount": 10
5
+ },
6
+ "auditLog": "log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json",
7
+ "files": [
8
+ {
9
+ "date": 1745202533527,
10
+ "name": "log/wan-ton-sdk.out.2025-04-21",
11
+ "hash": "04398e7712ef33c1735d78c6eefa0f22fecd7652c9bd52e2f042bc28c5381850"
12
+ },
13
+ {
14
+ "date": 1745985927389,
15
+ "name": "log/wan-ton-sdk.out.2025-04-30",
16
+ "hash": "748a421be18c9cd5df822f67097edffffc9e3b5a855c66c3c8e44148862d1f14"
17
+ }
18
+ ],
19
+ "hashType": "sha256"
20
+ }
File without changes
@@ -0,0 +1,10 @@
1
+ 2025-04-30T04:05:28.479Z [info]: getClient config undefined
2
+ 2025-04-30T04:05:29.448Z [info]: fromBuffer=> 307838333335383966636436656462366530386634633763333264346637316235346264613032393133
3
+ 2025-04-30T04:05:29.450Z [info]: toBuffer=> 0000000000000000000000000000000000000000000000000000000000000000
4
+ 2025-04-30T04:05:29.497Z [info]: fromBuffer=> 833589FCD6EDB6E08F4C7C32D4F71B54BDA02913
5
+ 2025-04-30T04:05:29.498Z [info]: toBuffer=> 0000000000000000000000000000000000000000000000000000000000000000
6
+ 2025-04-30T04:05:29.504Z [info]: fromBuffer=> 833589FCD6EDB6E08F4C7C32D4F71B54BDA02913
7
+ 2025-04-30T04:05:29.506Z [info]: toBuffer=> 0000000000000000000000000000000000000000000000000000000000000000
8
+ 2025-04-30T04:05:31.380Z [info]: Entering
9
+ 2025-04-30T04:05:31.381Z [info]: hello Jacob alice
10
+ 2025-04-30T04:05:32.400Z [info]: getClient config undefined