xuperchain / xuperchain

A highly flexible blockchain architecture with great transaction performance.

Home Page:https://xuper.baidu.com/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cli 部署合约未指定 --keys, 并没有使用默认账户,(msg.sender)调用地址是合约账户转化, 指定 keys也是用的合约账户转化地址

userInner opened this issue · comments

共识:single
测试合约:
pragma solidity ^0.4.25;

contract InvokeAddress{
address[] arr;
constructor() public {
arr.push(msg.sender);
}

function put() public returns(address[]) {
arr.push(msg.sender);
return arr;
}

部署命令(未指定用户名录)

 bin/xchain-cli evm deploy --account XC4944044147631208@xuper --cname invokeAddress testInvokeAddress/InvokeAddress.bin --abi testInvokeAddress/InvokeAddress.abi --fee 2000

SDK调用合约,查询地址(使用的是默认data/keys用户)

70922969e0c41434c0c5266d2720821

解释:第一次调用地址, 是由合约地址转化的,后续是sdk调用,使用的keys目录下address转化的evm地址

第二次部署,部署命令(指定用户目录)

bin/xchain-cli evm deploy --account XC4944044147631208@xuper --cname invokeAddress2 testInvokeAddress/InvokeAddress.bin --abi testInvokeAddress/InvokeAddress.abi --fee 2000 --keys ./data/

调用地址查询

image

解释: 第一个地址是由cli部署,第二个是由sdk查询,第三个由cli查询,第四个为sdk查询

解决方案: 只有用sdk部署,sdk调用,(msg.sender)地址才是一样的。

commented

部署时候必须指定合约账户,如果此次调用/部署 指定了合约账户,那么这一次的 msg.sender 为合约账户,反之,为普通账户

我用bin/xchain-cli 部署可以不指定合约账户吗?

commented

我用bin/xchain-cli 部署可以不指定合约账户吗?

部署合约必须指定合约账户

sdk啥时候搞一个合约账户调用合约

sdk啥时候搞一个合约账户调用合约

go sdk 支持合约账户调用合约