8.2 注册测试环境账号并部署测试环境

  • 使用邮箱注册测试环境账号,获取service_id和key。开发者可以自己实现接口请求或使用postman等工具来注册。下面提供apiary的api接口用于注册。调用接口时需根据实际情况计算sign和修改请求参数。demo-apiary-regist

  • 下载测试版迅雷链助手,新建个人测试用账户。使用第一步里的接口向对应的账户充值。

  • 编译合约,获取部署合约所需的bytecode。这里如果使用truffle开发的话,可以使用truffle compile命令编译合约 /build 文件夹下获取对应合约的json文件,提取对应的bytecode。如果使用remix开发合约的话,点击 compile => Details 获取对应的bytecode。

  1. // HelloWorld.sol bytecode
  2. 0x608060405234801561001057600080fd5b506040516020806104f783398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610474806100836000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063370158ea1461005c5780638da5cb5b146100ec578063fe6b378314610143575b600080fd5b34801561006857600080fd5b50610071610225565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b1578082015181840152602081019050610096565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156100f857600080fd5b506101016102c3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014f57600080fd5b506101aa600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506102e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101ea5780820151818401526020810190506101cf565b50505050905090810190601f1680156102175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102bb5780601f10610290576101008083540402835291602001916102bb565b820191906000526020600020905b81548152906001019060200180831161029e57829003601f168201915b505050505081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606081600190805190602001906103009291906103a3565b5060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156103975780601f1061036c57610100808354040283529160200191610397565b820191906000526020600020905b81548152906001019060200180831161037a57829003601f168201915b50505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106103e457805160ff1916838001178555610412565b82800160010185558215610412579182015b828111156104115782518255916020019190600101906103f6565b5b50905061041f9190610423565b5090565b61044591905b80821115610441576000816000905550600101610429565b5090565b905600a165627a7a72305820e93b6ccfaace4a512cc7b4a45ba826b940ce758758fe21abe52cb4c1fecf211f0029
  • 如果合约的构造函数带有初始化参数,需要计算初始化参数params的data。如果使用remix开发合约的话,点击 run,选中要部署的合约,输入初始化参数,点击 deploy。在控制台中可以查看此交易的详细信息,其中的input即为合约编译的bytecode与初始化参数组成的data。由于测试环境的部署接口,将合约编译的bytecode与初始化参数的params分离开来,所以这里需要将params对应的data单独提取。如果使用的是ethers.js,利用ethers.utils.ABICoder的encode方法,编译对应的初始化参数为部署合约的params。
  1. var ethers = require('ethers')
  2. var abiCoder = new ethers.utils.AbiCoder()
  3. return abiCoder.encode(['address'], ['0xca35b7d915458ef540ade6068dfe2f44e8fa733c'])
  4. // 0x000000000000000000000000ca35b7d915458ef540ade6068dfe2f44e8fa733c
  • 调用测试环境测试环境部署合约接口,参数为上述的bytecode、params以及部署合约的email和计算的签名sign。请求结果会返回一个部署合约的id。然后调用根据id查询合约地址接口,查询已部署合约的地址。