Created
October 14, 2020 22:30
-
-
Save dmdeklerk/f5750f2f16776516008d7be0e70b0c3e to your computer and use it in GitHub Desktop.
Airgapped broadcast protocol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Air gapped broadcast protocol for Heat Wallet. | |
*/ | |
const RECIPIENT_ADDRESS = 0 | |
const RECIPIENT_ADDRESS_TYPE = 1 | |
const BLOCKCHAIN_NUM = 2 | |
const ASSET_TYPE_NUM = 3 | |
const ASSET_ID = 4 | |
const TRANSACTION_TYPE_ID = 5 | |
const TRANSACTION_HEX = 6 | |
const SENDER_ADDRESS = 7 | |
const SENDER_ADDRESS_TYPE = 8 | |
const AMOUNT = 9 | |
const FEE = 10 | |
const MESSAGE = 11 | |
const MESSAGE_IS_PRIVATE = 12 | |
const NONCE = 13 | |
const GASPRICE = 14 | |
const GASLIMIT = 15 | |
const CHAINID = 16 | |
const CHANGE_ADDRESS = 17 | |
const PERIOD = 18 | |
export class BroadcastProtocolBuilder { | |
private buffer: Array<any> = [] | |
set recipient_address(val:any) { this.buffer[RECIPIENT_ADDRESS] = val } | |
set recipient_address_type(val:any) { this.buffer[RECIPIENT_ADDRESS_TYPE] = val } | |
set blockchain_num(val:any) { this.buffer[BLOCKCHAIN_NUM] = val } | |
set asset_type_num(val:any) { this.buffer[ASSET_TYPE_NUM] = val } | |
set asset_id(val:any) { this.buffer[ASSET_ID] = val } | |
set transaction_type_id(val:any) { this.buffer[TRANSACTION_TYPE_ID] = val } | |
set transaction_hex(val:string) { this.buffer[TRANSACTION_HEX] = val.toUpperCase() } | |
set sender_address(val:any) { this.buffer[SENDER_ADDRESS] = val } | |
set sender_address_type(val:any) { this.buffer[SENDER_ADDRESS_TYPE] = val } | |
set amount(val:any) { this.buffer[AMOUNT] = val } | |
set fee(val:any) { this.buffer[FEE] = val } | |
set message(val:any) { this.buffer[MESSAGE] = val } | |
set message_is_private(val:any) { this.buffer[MESSAGE_IS_PRIVATE] = val ? 1 : 0 } | |
set nonce(val:any) { this.buffer[NONCE] = val } | |
set gasprice(val:any) { this.buffer[GASPRICE] = val } | |
set gaslimit(val:any) { this.buffer[GASLIMIT] = val } | |
set chainid(val:any) { this.buffer[CHAINID] = val } | |
set change_address(val:any) { this.buffer[CHANGE_ADDRESS] = val } | |
set period(val:any) { this.buffer[PERIOD] = val } | |
public toString(): string { | |
let str = '' | |
this.buffer.forEach((val,index) => { | |
let asString = `${val}` | |
if (asString.indexOf('/') != -1) { | |
throw new Error(`Value at index ${index} contains "/" character`) | |
} | |
str += `${val}/` | |
}) | |
return str | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment