βοΈFine-Tuning Allocation Points
Code Overview
// setup
const { LCDClient, MnemonicKey, MsgExecuteContract } = require('@terra-money/terra.js');
async function main() {
const terra = new LCDClient({
URL: 'https://pisco-lcd.terra.dev',
chainID: 'pisco-1',
});
const mk = new MnemonicKey({
mnemonic: ''
});
const wallet = terra.wallet(mk);
// contract addresses (testnet)
const assembly_address = 'terra195m6n5xq4rkjy47fn5y3s08tfmj3ryknj55jqvgq2y55zul9myzsgy06hk';
const xastro_address = 'terra1ctzthkc0nzseppqtqlwq9mjwy9gq8ht2534rtcj3yplerm06snmqfc5ucr';
const generator_address = 'terra1ksvlfex49desf4c452j6dewdjs6c48nafemetuwjyj6yexd7x3wqvwa7j9';
// custom functions
function toEncodedBinary(object) {
return Buffer.from(JSON.stringify(object)).toString('base64');
}
// generator msg
const generator_msg = {
"setup_pools": {
"pools": [
("lp_token_address", "1000"),
("lp_addr2", "10"),
... etc
]
}
}
const generator_binary = toEncodedBinary(generator_msg)
const proposal_msgs = [
{
order: "1",
msg: {
wasm: {
execute: {
contract_addr: generator_address,
msg: generator_binary,
funds: []
}
}
}
}
]
// proposal msg
const proposal_msg = {
"submit_proposal": {
"title": "testing",
"description": "testing",
"link": null,
"messages": proposal_msgs
}
}
const proposal_binary = toEncodedBinary(proposal_msg)
const msg = {
"send": {
"contract": assembly_address,
"amount": "30000000000",
"msg": proposal_binary
}
}
// execute and broadcast transaction
const execute = new MsgExecuteContract(
wallet.key.accAddress,
xastro_address,
msg,
);
const executeTx = await wallet.createAndSignTx({
msgs: [execute]
})
.then(tx => terra.tx.broadcast(tx))
.then((data) => console.log(result.txhash));
}
main().catch(console.error)Step-by-Step
Set up
Contract Addresses
Custom Functions
Generator Msg
Proposal Msg
Execute and Broadcast Transaction
Last updated