solidity合约访问其他合约的mapping

BCOS评论710阅读模式
摘要

solidity合约访问其他合约的mapping的方式

错误代码

被访问合约

contract BagUserAdmin {
    mapping(bytes32 => RecordBean) bagRecordOf;
}

访问合约

contract UserGiveLikes{

    BagUserAdmin internal bagUserAdmin;
	constructor(address BagUserAdminAddress){
        bagUserAdmin = BagUserAdmin(BagUserAdminAddress);
    }
	// 直接去访问该合约对象的mapping
	bagRecordBean = bagUserAdmin.bagRecordOf[TypeConvertUtil.stringToBytes32(_forBagid)];

}

正确引用:

contract BagUserAdmin is TableDefTools{

    mapping(bytes32 => RecordBean) bagRecordOf;
	function getBagValues(string _bagid) public view returns(string []){
        return bagRecordOf[TypeConvertUtil.stringToBytes32(_bagid)].values;
    }
}
contract UserGiveLikes{

    BagUserAdmin internal bagUserAdmin;
	constructor(address BagUserAdminAddress){
        bagUserAdmin = BagUserAdmin(BagUserAdminAddress);
    }
	// 通过getter方法去访问该合约对象的mapping
	bagRecordValues = bagUserAdmin.getBagValues(_forBagid);

}

BCOS最后更新:2020-11-6
以太坊之数据存储详解 以太坊

以太坊之数据存储详解

本文整理分析以太坊网络中的区块、交易以及合约数据是如何存储的。 区块结构 区块由两部分组成,分别是区块头(header)和区块体(body)两部分,详细结构图如下。 区块头(header) 区块头存储...
FISCO BCOS证书与鉴权体系 BCOS

FISCO BCOS证书与鉴权体系

区块链之所以被称为“信任的机器”,是因为其通过密码学算法使各不信任的节点互相协作达到信任。这一理念在联盟链中的体现主要是基于PKI(公钥基础设施)建立证书体系,FISCO BCOS中的证书主要满足SS...
Solidity合约间调用原子性操作实验 BCOS

Solidity合约间调用原子性操作实验

实验说明 为了测试在合约内调用另一个合约时,若在某一方法内,先调用另一个合约方法导致其数据更改成功,而执行后面的语句时由于某些原因导致交易失败,那么已经被调用的合约数据已然更改还是未被更改?针对这个问...