Solidity 学习笔记(1)- string和bytes【为什么从JavaScript或remix编译器如果需传入bytes类型,你传入string类型会报错】

参考解决方案:https://www.jianshu.com/p/b39a4aed3663
Solidity 学习笔记(1)- string和bytes【为什么从JavaScript或remix编译器如果需传入bytes类型,你传入string类型会报错】_第1张图片

推荐使用ethers库中的utils.formatBytes32String("")方法,会自动把string转换成hex十六进制类型【bytes32】

IERC777的send(address recipient, uint256 amount, bytes data)方法

consol.log(utils.formatBytes32String("")) //输出结果为:0x0000000000000000000000000000000000000000000000000000000000000000
const { utils } = require("ethers")
async send() {
		// 不推荐使用,仅展示为什么传入string不行的原因
        let result = await this.contract_instance.functions["send"](to_address, 100, "0x");
        // 最标准的方式传入bytes32的十六进制
        let result = await this.contract_instance.functions["send"](to_address, 100, utils.formatBytes32String(""));
        console.log("result=====", result);
    }

你可能感兴趣的:(Solidity 学习笔记(1)- string和bytes【为什么从JavaScript或remix编译器如果需传入bytes类型,你传入string类型会报错】)