UNPKG

@dnextco/tokenboost-solidity-erc223token

Version:

Solidity contracts for TokenBoost (ERC223Token)

36 lines (31 loc) 1.46 kB
String.prototype.toHex = function () { let arr = []; let i = 0, l = this.length; for (; i < l; i++) { let hex = Number(this.charCodeAt(i)).toString(16); arr.push(hex); } return arr.join(''); }; module.exports = async function (web3, identifier, Contract, WidgetRenderer, Template, Registry, price = 0, beneficiary = '0x00000000000000000000000000000000000000', name = '', description = '') { let bytecode = Contract.bytecode; if (WidgetRenderer != null) { let renderer = await WidgetRenderer.deployed(); bytecode = Contract.bytecode.replace( new RegExp(("_" + WidgetRenderer.contractName + "__________________").substr(0, 20).toHex(), "gi"), renderer.address.substr(2) ); } console.log("bytecode: " + bytecode); let bytecodeHash = web3.sha3(bytecode, {encoding: 'hex'}); console.log("bytecodeHash: " + bytecodeHash); let template = await Template.new(bytecodeHash, price, beneficiary); await template.setNameAndDescription('', name, description); console.log(Template.contractName + ": " + template.address); let registry = await Registry.deployed(); let versions = await registry.versionsOf(identifier); let version = versions.length === 0 ? 1 : parseInt(versions[versions.length - 1]) + 1; await registry.register(identifier, version, template.address); };