登录
首页 >  Golang >  Go问答

在 Hedera 哈希图中传输 ERC-20

来源:stackoverflow

时间:2024-04-09 20:54:33 213浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《在 Hedera 哈希图中传输 ERC-20》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我正在尝试编写将在 hedera 哈希图中传输 erc-20 代币的函数。

pragma solidity ^0.8.7;

import "@openzeppelin/contracts/token/erc20/erc20.sol";    
contract coins is erc20 {
        constructor(string memory name_, string memory symbol_)  erc20(name_, symbol_) {
            _mint(msg.sender, 1000000000000000000000);
        }
    }

非常简单的可靠性合约

然后我将其部署在常春藤中

tx, err := hedera.newcontractcreateflow().
        setbytecode(bytecode).
        setgas(1_000_000).
        setconstructorparameters(
            hedera.newcontractfunctionparameters().
                addstring("coins").
                addstring("coin"),
        ).
        execute(client)

然后我尝试将一些 erc-20 代币转移到其他地址

ps, _ := hedera.NewContractFunctionParameters().
    AddAddress(hedera.AccountID{Account: 34937758}.ToSolidityAddress())
ps.AddUint256(big.NewInt(1).Bytes())

contractExecTx, err := hedera.NewContractExecuteTransaction().
    SetContractID(newContractID).
    SetGas(1000000).
    SetFunction("transfer", ps).
    Execute(client)

我收到错误 statuscontractrevertexecuted (33)

是否可以在以太坊中像往常一样使用 erc-20 代币?或者我只能使用 hts? 是否可以使用 solidity 合约并将其注册为 hedera 中的代币?

非常感谢


正确答案


upd:解决方案

看起来 uint256 的字节与 hedera uint256 不兼容 并且 big.newint(number).bytes() 不适用于 hedera uint256

我需要一些 abi 库

github.com/dcb9/go-ethereum/accounts/abi


adduint256(abi.u256(big.newint(some number)))

然后回到big.int

query.GetUint256(0) // query for getting uint256

bInt := new(big.Int)
bInt.SetBytes(query.GetUint256(0))

现在它工作完美

终于介绍完啦!小伙伴们,这篇关于《在 Hedera 哈希图中传输 ERC-20》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>