首先,如果你想使用 AddressBook 作为跟踪和加载所有的全球智能合约 Deal 合同。你应该已经部署了 AddressBook 合同并保存它的地址。然后你可以加载 AddressBook 合同里面 constructor 的 Deal 合同并添加当前的地址 Deal 将在已部署的全球范围内部署的合同 AddressBook 合同。我做了一些关于给定合同的工作。我在里面使用了一组地址 AddressBook 合同跟踪所有的地址 Deal 合同。以下示例代码可以为您提供好主意。
AddressBook
Deal
constructor
//Address Book Contract pragma solidity ^0.5.1; contract AddressBook { //mapping(address => address[]) private _addresses; address[] private _addresses; mapping(address => mapping(address => string)) private _aliases; function getAddresses() public view returns (address [] memory) { return _addresses; } function addAddress(address addr, string memory _alias) public payable { _addresses.push(addr); _aliases[msg.sender][addr] = _alias; } }
我只关注 _address 这里。以下是交易合同:
_address
pragma solidity ^0.5.1; import "./AddressBook.sol"; contract Deal { AddressBook addressBook; address public owner; address public buyerAddr; address private addr; string private metaData; uint private duration; uint private price; string private typeOfData; string private gateKeeper; event SafepaySent(address buyer, uint value, uint now); /// The smart contract's constructor constructor(address _addressBook) public payable { /// The seller is the contract's owner owner = msg.sender; addressBook = AddressBook(_addressBook); addressBook.addAddress(address(this),"test"); } function getAddresses() public view returns (address[] memory) { return addressBook.getAddresses(); } }
您还可以在混音中测试并运行它。希望它有效。