我想通过使用我的go后端代码和go-ethereum包来部署契约。由于系统的这一部分将作为中心元素运行(因为它做了许多其他事情),所以我不会(也不想)访问用户的私钥。因此,我希望部署将由用户通过元问题(我的前端+元问题浏览器扩展)签署的合同。
根据这教程,我可以部署我的合同,但它使用私钥来签署它。例如:
auth := bind.NewKeyedTransactor(privateKey) // Is NewClefTransactor that I should use?
auth.Nonce = big.NewInt(int64(nonce))
auth.Value = big.NewIn
如果我没弄错的话,智能合约没有私钥,所以它们不能签署交易。第一个事务被签署购买用户,如果合同调用另一个合同,依此类推,这些交易也被签署购买用户。所以,如果我们有两个ERC20合约A和B,B持有一些A令牌。
contract A{
....
//balance of contract B
balanceOf[0xE4e5a16C8fx207a07f7df98e3a85e2067feacB9w]=500;
function transfer(address _to, uint256 _value) public {
_transfer(msg.sender, _to, _valu
提前感谢您的时间和智力贡献。
我正在做一个项目,在这个项目中,我们有相互作用的合同。
更具体地说,有一个“父亲契约”,其功能只应由“子女契约”来执行,因此,我们需要一种方法来验证(事实上)呼叫者,然后才允许他们采取任何行动。在这种情况下,任何人首先想到的是保存允许的地址列表,如下所示:
...
mapping(address => bool) allowedAddrs;
...
//adds a new address to the list of allowed contracts
function addChild(address _child) publi