This class is intended for automatic opening of new channels when the specified balance is reached and automatic payment from the current channel. Example: https://github.com/BIoTws/endless-channels-example
Constructor
walletId - String
timeout - Number - in ms
maxOpenChannels - Number
timeForMutualClosingChannel - Number
Example: init
JS module
Copy const autoRenewableChannel = new AutoRenewableChannel (wallets[ 0 ] , peerDeviceAddress , 20000 , 2 );
await autoRenewableChannel .openNewChannel ({
walletId : wallets[ 0 ] ,
peerAddress : null ,
myAmount : 100 ,
peerAmount : 100 ,
age : 10
});
Example: channel approval
JS module
Copy const core = require ( 'biot-core' );
const AutoRenewableChannel = require ( 'biot-core/lib/AutoRenewableChannel' );
async function start () {
await core .init ( 'test' );
let wallets = await core .getMyDeviceWallets ();
const autoRenewableChannel = new AutoRenewableChannel (wallets[ 0 ] , null , 20000 , 2 );
autoRenewableChannel .init ();
autoRenewableChannel . events .on ( 'start' , console .error);
autoRenewableChannel . events .on ( 'new_transfer' , (amount , message , id) => {
console .error ( 'new transfer' , amount , message , id);
});
autoRenewableChannel . events .on ( 'request_approve_channel' , async (objInfo) => {
console .error ( 'new Channel: ' , objInfo);
console .error ( await autoRenewableChannel .approve ( objInfo .index));
});
}
start () .catch ( console .error);
Events
Error
Copy autoRenewableChannel . events .on ( 'error' , (error , id) => {
console .error ( 'channelError' , id , error);
});
start
This event is triggered once at the start of the first channel. The event fires after approve channel.
Copy autoRenewableChannel . events .on ( 'start' , (id) => {
console .error ( 'channel start:' , id);
});
init
init autoRenewableChannel
Copy autoRenewableChannel . events .on ( 'init' , stats => {
console .error (peerId , device_address timeForMutualClosingChannel);
});
request_approve_channel
This event notifies us of the request to open the first channel. Contains technical information.
Structure objInfo:
peerDeviceAddress - String - peer device address for opening channel
myAddress - String - peer byteball address
peerAmount - Number - your amount in bytes
myAmount : - Number - peer amount in bytes
age - Number - Timeout in MCI for withdrawal bytes from channel when using one-side closure
id - String - channel id
myUnilateralAddress - Array - The address of the peer for signing transactions inside the channel
myDestinationAddress - Array - The address of the peer for withdrawal from the channel
JS module
Copy autoRenewableChannel . events .on ( 'request_approve_channel' , async (objInfo) => {
console .error ( 'info: ' , objInfo); //request to open
if ( objInfo .peerAmount === 100 ) {
await autoRenewableChannel .approve ( objInfo .id);
} else {
await autoRenewableChannel .reject ( objInfo .id);
}
});
changed_step
Copy autoRenewableChannel . events .on ( 'changed_step' , (step , id) => {
console .error ( 'changed_step: ' , step , id);
});
new_transfer
Copy autoRenewableChannel . events .on ( 'new_transfer' , async (amount , message , id) => {
console .error ( 'new_transfer: ' , amount , message , id);
});