Example Usage

Remote Signing

The below example code displays the usage of customSigner to remotely sign a transaction that was generated by Anchor Earn.

For demonstration purposes, implementation of customSigner was done using Terra.js. For real usage customSigner should be connected with a remote signing solution used by the integrator (e.g. Ledger Hardware Wallet, Custodian APIs).

const anchorEarn = new AnchorEarn({
chain: CHAINS.TERRA,
network: NETWORKS.TEQUILA_0004,
mnemonic:
'...',
});
// customSigner signs the generated unsigned tx
const customSigner = async (tx: Msg[]) => {
const account = new MnemonicKey({
mnemonic:
'...',
});
const wallet = new Wallet(
new LCDClient({
URL: 'https://tequila-lcd.terra.dev',
chainID: 'tequila-0004',
}),
account,
);
return await wallet.createAndSignTx({
msgs: tx,
gasAdjustment: 2,
gasPrices: { uusd: 0.15 },
});
};
await anchorEarn.deposit({
amount: '0.01',
currency: DENOMS.UST,
log: (data) => {
console.log(data);
},
customSigner: customSigner,
});

Remote Signing & Broadcasting

The below example code displays the usage of customBroadcaster to remotely sign and broadcast a transaction that was generated by Anchor Earn.

For demonstration purposes, implementation of customBroadcaster was done using Terra.js. For real usage customBroadcaster should be connected with a remote signing solution used by the integrator (e.g. Web Wallet Extension).

const anchorEarn = new AnchorEarn({
chain: CHAINS.TERRA,
network: NETWORKS.TEQUILA_0004,
mnemonic:
'...',
});
// customBroadcaster signs and broadcasts the generated unsigned tx
const customBroadcaster = async (tx: Msg[]) => {
const lcd = new LCDClient({
URL: 'https://tequila-lcd.terra.dev',
chainID: 'tequila-0004',
});
const wallet = new Wallet(
lcd,
new MnemonicKey({
mnemonic:
'...',
}),
);
const signedTx = await wallet.createAndSignTx({
msgs: tx,
gasAdjustment: 2,
gasPrices: { uusd: 0.15 },
});
return lcd.tx.broadcastSync(signedTx).then((result) => {
return result.txhash;
});
};
await anchorEarn.withdraw({
amount: '0.01',
currency: DENOMS.AUST,
log: (data) => {
console.log(data);
},
customBroadcaster: customBroadcaster
});

Logging Transaction Progress

The below example code displays the usage of loggable to check on request progresses that were generated by Anchor Earn.

const deposit = await anchorEarn.deposit({
amount: '...',
currency: DENOMS.UST,
log: (data) => {
console.log(data);
}
});