Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 7751ea9

Browse files
committedNov 14, 2024
Add TON Pool and split stakers
1 parent 529674a commit 7751ea9

File tree

6 files changed

+660
-421
lines changed

6 files changed

+660
-421
lines changed
 

‎packages/staking-cli/src/cmd/ton.ts

+75-11
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { SignerType } from '../enums'
77
import { prompt, readConfig, getNetworkConfig, log, defaultLogger } from '../util'
88
import { SafeJSONStringify } from '@chorus-one/utils'
99
import { newSigner } from '../signer'
10-
import { TonStaker } from '@chorus-one/ton'
10+
import { TonPoolStaker, TonNominatorPoolStaker, TonSingleNominatorPoolStaker } from '@chorus-one/ton'
1111

1212
export interface CLINetworkConfig extends TonNetworkConfig {
1313
// block explorer URL to display Transaction ID via Web UI. Example:
@@ -29,6 +29,16 @@ function makeTxCommand (): Command {
2929
.option('-b, --broadcast', 'broadcast generated transaction', false)
3030
.option('-j, --journal <value>', "write TX'es to the local journal log", 'true')
3131

32+
tx.command('delegate-pool')
33+
.description('generate a delegate funds to TON pool contract transaction')
34+
.argument('<amount>', 'amount of tokens to stake expressed in TON denom e.g 0.1')
35+
.action(getDelegatePoolTx)
36+
37+
tx.command('unstake-pool')
38+
.description('generate a unstake funds to TON pool contract transaction')
39+
.argument('<amount>', 'amount of tokens to unstake expressed in TON denom e.g 0.1')
40+
.action(getUnstakePoolTx)
41+
3242
tx.command('delegate-nominator-pool')
3343
.description('generate a delegate funds to TON nominator pool contract transaction')
3444
.argument('<amount>', 'amount of tokens to stake expressed in TON denom e.g 0.1')
@@ -70,11 +80,11 @@ async function init (
7080

7181
const networkConfig = getNetworkConfig<CLINetworkConfig>(config)
7282
const signer = await newSigner(config, signerType as SignerType, {
73-
addressDerivationFn: TonStaker.getAddressDerivationFn({
83+
addressDerivationFn: TonNominatorPoolStaker.getAddressDerivationFn({
7484
addressDerivationConfig: networkConfig.addressDerivationConfig
7585
}),
76-
mnemonicToSeedFn: TonStaker.getMnemonicToSeedFn(),
77-
seedToKeypairFn: TonStaker.getSeedToKeypairFn(),
86+
mnemonicToSeedFn: TonNominatorPoolStaker.getMnemonicToSeedFn(),
87+
seedToKeypairFn: TonNominatorPoolStaker.getSeedToKeypairFn(),
7888
keyType: KeyType.ED25519,
7989
logger: defaultLogger
8090
})
@@ -95,9 +105,6 @@ async function runTx (
95105
const [config, signer] = await init(cmd)
96106

97107
const networkConfig = getNetworkConfig<CLINetworkConfig>(config)
98-
const tonStaker: TonStaker = new TonStaker({ ...networkConfig })
99-
await tonStaker.init()
100-
101108
const logger = defaultLogger
102109

103110
logger.info(0, 3, 'inspect input data')
@@ -117,11 +124,42 @@ async function runTx (
117124

118125
let unsignedTx: UnsignedTx | undefined
119126

127+
let tonStaker: TonPoolStaker | TonNominatorPoolStaker | TonSingleNominatorPoolStaker
128+
120129
try {
121130
switch (msgType) {
131+
case 'delegate-pool': {
132+
tonStaker = new TonPoolStaker({ ...networkConfig })
133+
await tonStaker.init()
134+
135+
unsignedTx = (
136+
await tonStaker.buildStakeTx({
137+
delegatorAddress: config.delegatorAddress,
138+
validatorAddress: config.validatorAddress,
139+
amount: arg[0] // amount
140+
})
141+
).tx
142+
break
143+
}
144+
case 'unstake-pool': {
145+
tonStaker = new TonPoolStaker({ ...networkConfig })
146+
await tonStaker.init()
147+
148+
unsignedTx = (
149+
await tonStaker.buildUnstakeTx({
150+
delegatorAddress: config.delegatorAddress,
151+
validatorAddress: config.validatorAddress,
152+
amount: arg[0] // amount
153+
})
154+
).tx
155+
break
156+
}
122157
case 'delegate-nominator-pool': {
158+
tonStaker = new TonNominatorPoolStaker({ ...networkConfig })
159+
await tonStaker.init()
160+
123161
unsignedTx = (
124-
await tonStaker.buildStakeNominatorPoolTx({
162+
await tonStaker.buildStakeTx({
125163
delegatorAddress: config.delegatorAddress,
126164
validatorAddress: config.validatorAddress,
127165
amount: arg[0] // amount
@@ -130,17 +168,23 @@ async function runTx (
130168
break
131169
}
132170
case 'unstake-nominator-pool': {
171+
tonStaker = new TonNominatorPoolStaker({ ...networkConfig })
172+
await tonStaker.init()
173+
133174
unsignedTx = (
134-
await tonStaker.buildUnstakeNominatorPoolTx({
175+
await tonStaker.buildUnstakeTx({
135176
delegatorAddress: config.delegatorAddress,
136177
validatorAddress: config.validatorAddress
137178
})
138179
).tx
139180
break
140181
}
141182
case 'delegate-single-nominator-pool': {
183+
tonStaker = new TonSingleNominatorPoolStaker({ ...networkConfig })
184+
await tonStaker.init()
185+
142186
unsignedTx = (
143-
await tonStaker.buildStakeSingleNominatorPoolTx({
187+
await tonStaker.buildStakeTx({
144188
delegatorAddress: config.delegatorAddress,
145189
validatorAddress: config.validatorAddress,
146190
amount: arg[0] // amount
@@ -149,8 +193,11 @@ async function runTx (
149193
break
150194
}
151195
case 'unstake-single-nominator-pool': {
196+
tonStaker = new TonSingleNominatorPoolStaker({ ...networkConfig })
197+
await tonStaker.init()
198+
152199
unsignedTx = (
153-
await tonStaker.buildUnstakeSingleNominatorPoolTx({
200+
await tonStaker.buildUnstakeTx({
154201
delegatorAddress: config.delegatorAddress,
155202
validatorAddress: config.validatorAddress,
156203
amount: arg[0] // amount
@@ -159,6 +206,9 @@ async function runTx (
159206
break
160207
}
161208
case 'transfer': {
209+
tonStaker = new TonNominatorPoolStaker({ ...networkConfig })
210+
await tonStaker.init()
211+
162212
unsignedTx = (
163213
await tonStaker.buildTransferTx({
164214
destinationAddress: config.validatorAddress,
@@ -168,13 +218,19 @@ async function runTx (
168218
break
169219
}
170220
case 'deploy-wallet': {
221+
tonStaker = new TonNominatorPoolStaker({ ...networkConfig })
222+
await tonStaker.init()
223+
171224
unsignedTx = (
172225
await tonStaker.buildDeployWalletTx({
173226
address: config.delegatorAddress
174227
})
175228
).tx
176229
break
177230
}
231+
default: {
232+
cmd.error('unsupported message type', { exitCode: 1, code: `${msgType}.tx.unsupported` })
233+
}
178234
}
179235
} catch (e: any) {
180236
cmd.error(e, { exitCode: 1, code: msgType + '.tx.sign' })
@@ -224,6 +280,14 @@ async function runTx (
224280
}
225281
}
226282

283+
async function getDelegatePoolTx (amount: string, options: any, cmd: Command<[string]>): Promise<void> {
284+
await runTx('delegate-pool', options, cmd, [amount])
285+
}
286+
287+
async function getUnstakePoolTx (amount: string, options: any, cmd: Command<[string]>): Promise<void> {
288+
await runTx('unstake-pool', options, cmd, [amount])
289+
}
290+
227291
async function getDelegateNominatorPoolTx (amount: string, options: any, cmd: Command<[string]>): Promise<void> {
228292
await runTx('delegate-nominator-pool', options, cmd, [amount])
229293
}

0 commit comments

Comments
 (0)