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.
- package/Bridge.compile.ts +8 -0
- package/Bridge.ts +645 -0
- package/Bridge.ts.org +647 -0
- package/Fake.compile.ts +8 -0
- package/GroupApprove.compile.ts +6 -0
- package/GroupApprove.ts +274 -0
- package/JettonMinter.compile.ts +5 -0
- package/JettonMinter.ts +135 -0
- package/JettonWallet.compile.ts +5 -0
- package/JettonWallet.ts +127 -0
- package/README.md +24 -0
- package/Signature.compile.ts +6 -0
- package/Signature.ts +105 -0
- package/address.compile.ts +8 -0
- package/client/1.json +1730 -0
- package/client/client.ts +73 -0
- package/client/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
- package/client/log/wan-ton-sdk.out.2024-12-19 +0 -0
- package/code/decode.spec.ts +81 -0
- package/code/encode-decode.ts +622 -0
- package/code/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
- package/code/log/wan-ton-sdk.out.2025-01-15 +0 -0
- package/code/log/wan-ton-sdk.out.2025-01-20 +0 -0
- package/code/userLock.ts +291 -0
- package/common.ts +62 -0
- package/config/config-ex.ts +25 -0
- package/config/config.ts +1 -0
- package/const/const-value.ts +33 -0
- package/contractAccess/bridgeAccess.ts +60 -0
- package/contractAccess/groupApproveAccess.ts +59 -0
- package/data/EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs.json +7348 -0
- package/db/Db.spec.ts +193 -0
- package/db/Db.ts +736 -0
- package/db/DbAccess.spec.ts +23 -0
- package/db/DbAccess.ts +174 -0
- package/db/common.ts +94 -0
- package/db/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
- package/db/log/wan-ton-sdk.out.2025-04-21 +0 -0
- package/event/getEvents.ts +441 -0
- package/event/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
- package/event/log/wan-ton-sdk.out.2024-12-19 +0 -0
- package/example/0:1.txt +1 -0
- package/example/AddToken-ex.ts +148 -0
- package/example/README.md +21 -0
- package/example/addSmg-ex.ts +78 -0
- package/example/addTokenPair-ex.ts +73 -0
- package/example/compileContract-ex.ts +10 -0
- package/example/converTranToTonTran.ts +43 -0
- package/example/createDb-ex.ts +8 -0
- package/example/dbFeedTrans-ex.ts +20 -0
- package/example/delTokenPair-ex.ts +63 -0
- package/example/deploy-ex.ts +68 -0
- package/example/getAllEvents-ex.ts +61 -0
- package/example/getAllTrans.ts +32 -0
- package/example/getContractState-ex.ts +33 -0
- package/example/getEventByHash-ex.ts +39 -0
- package/example/getEvents-ex.ts +55 -0
- package/example/getJettonInfo-ex.ts +44 -0
- package/example/getTokenPair-ex.ts +47 -0
- package/example/getTransByRange-ex.ts +81 -0
- package/example/getTransaction-ex.ts +62 -0
- package/example/isTranSuccess-ex.ts +33 -0
- package/example/locateTx-ex.ts +44 -0
- package/example/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +55 -0
- package/example/log/wan-ton-sdk.out.2025-04-21 +447 -0
- package/example/log/wan-ton-sdk.out.2025-04-22 +1918 -0
- package/example/log/wan-ton-sdk.out.2025-04-23 +4216 -0
- package/example/log/wan-ton-sdk.out.2025-04-24.gz +0 -0
- package/example/log/wan-ton-sdk.out.2025-04-25 +46814 -0
- package/example/log/wan-ton-sdk.out.2025-04-27.gz +0 -0
- package/example/log/wan-ton-sdk.out.2025-04-28 +4966 -0
- package/example/log/wan-ton-sdk.out.2025-04-29 +1328 -0
- package/example/log/wan-ton-sdk.out.2025-04-30 +9 -0
- package/example/mintToken-ex.ts +82 -0
- package/example/setFee-ex.ts +82 -0
- package/example/setFeeProxy.ts +70 -0
- package/example/smgRelease-ex.ts +173 -0
- package/example/upgradeBridgeSc-ex.ts +49 -0
- package/example/userLock-ex.ts +78 -0
- package/fee/fee.ts +23 -0
- package/index.ts +67 -0
- package/jest.config.ts +9 -0
- package/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +20 -0
- package/log/wan-ton-sdk.out.2025-04-21 +0 -0
- package/log/wan-ton-sdk.out.2025-04-30 +10 -0
- package/opcodes.ts +58 -0
- package/package.json +34 -0
- package/publish.sh +78 -0
- package/sign/buildHash.ts +47 -0
- package/sign/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
- package/sign/log/wan-ton-sdk.out.2025-04-14 +3 -0
- package/sign/rawTrans.spec.ts +117 -0
- package/sign/rawTrans.ts +122 -0
- package/sign/tools-secp256k1.js +210 -0
- package/testData/JettonMinter.compile.func.ts +8 -0
- package/testData/JettonWallet.compile.func.ts +8 -0
- package/testData/addressList.json +6 -0
- package/testData/bridge.compile.func.ts +8 -0
- package/testData/bridge.compiled.json +1 -0
- package/testData/contractAddress.json +7 -0
- package/testData/jettonTokenInfo.json +14 -0
- package/testData/prvlist.json +6 -0
- package/testData/smg.json +5 -0
- package/testData/tokenInfo.json +23 -0
- package/transResult/transResult.ts +621 -0
- package/tsconfig.json +19 -0
- package/utils/.compiled.json +1 -0
- package/utils/compileContract.ts +60 -0
- package/utils/log/.ba8901062aebb86bf525b42c65ff84f9485419e4-audit.json +15 -0
- package/utils/log/wan-ton-sdk.out.2025-01-08 +0 -0
- package/utils/logger.spec.ts +14 -0
- package/utils/logger.ts +96 -0
- package/utils/utils.spec.ts +21 -0
- package/utils/utils.ts +295 -0
- package/wallet/balance.ts +29 -0
- package/wallet/jetton.spec.ts +27 -0
- package/wallet/jetton.ts +159 -0
- package/wallet/walletContract.spec.ts +111 -0
- 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,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
|