From b499627b384092127d11b325b3d6a39d8dc2c842 Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Tue, 4 Jun 2019 07:12:03 -0300 Subject: [PATCH] Migration contract example --- .../communication/MessageTributeMigrated.sol | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 contracts/communication/MessageTributeMigrated.sol diff --git a/contracts/communication/MessageTributeMigrated.sol b/contracts/communication/MessageTributeMigrated.sol new file mode 100644 index 0000000..824dff8 --- /dev/null +++ b/contracts/communication/MessageTributeMigrated.sol @@ -0,0 +1,36 @@ +pragma solidity >=0.5.0 <0.6.0; +import "./MessageTribute.sol"; + +/** + * @notice Defines migration contract of MessageTribute + */ +contract MessageTributeMigrated is MessageTribute { + mapping(address => bool) private migrated; + MessageTribute public previousVersion; + + /** + * @notice Defines the previous contract to load unset users + * @param _previousVersion Contract to read unset tributes + */ + constructor(MessageTribute _previousVersion) public { + require(address(_previousVersion) != address(0), "Previous version not provided"); + previousVersion = _previousVersion; + } + /** + * @notice Obtain required tribute to talk with `_of` from `previousVersion` if `_of` never set on this one + * @param _of Account to lookup + * @return value of tribute + */ + function getTribute(address _of) external view + returns (uint256) + { + return migrated[_of] ? tributeCatalog[_of] : previousVersion.getTribute(_of); + } + + function setTribute(address _of, uint256 _value) internal { + migrated[_of] = true; + super.setTribute(_of, _value); + } + + +} \ No newline at end of file