Skip to content

Commit

Permalink
move chooseReceiver method
Browse files Browse the repository at this point in the history
  • Loading branch information
patitonar committed Oct 22, 2019
1 parent d5b5890 commit fd80024
Show file tree
Hide file tree
Showing 9 changed files with 22 additions and 38 deletions.
14 changes: 14 additions & 0 deletions contracts/upgradeable_contracts/BaseERC677Bridge.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "./BasicTokenBridge.sol";
import "../interfaces/ERC677.sol";
import "../interfaces/ERC677Receiver.sol";
import "./ERC677Storage.sol";
import "../libraries/Bytes.sol";

contract BaseERC677Bridge is BasicTokenBridge, ERC677Receiver, ERC677Storage {
function erc677token() public view returns (ERC677) {
Expand All @@ -25,6 +26,19 @@ contract BaseERC677Bridge is BasicTokenBridge, ERC677Receiver, ERC677Storage {
return true;
}

function chooseReceiver(address _from, bytes _data) internal view returns (address recipient) {
recipient = _from;
if (_data.length > 0) {
require(_data.length == 20);
recipient = Bytes.bytesToAddress(_data);
require(recipient != address(0));
require(recipient != bridgeContractOnOtherSide());
}
}

/* solcov ignore next */
function bridgeSpecificActionsOnTokenTransfer(ERC677 _token, address _from, uint256 _value, bytes _data) internal;

/* solcov ignore next */
function bridgeContractOnOtherSide() internal view returns (address);
}
3 changes: 2 additions & 1 deletion contracts/upgradeable_contracts/ERC677Bridge.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
pragma solidity 0.4.24;

import "./BaseERC677Bridge.sol";
import "./OtherSideBridgeStorage.sol";

contract ERC677Bridge is BaseERC677Bridge {
contract ERC677Bridge is BaseERC677Bridge, OtherSideBridgeStorage {
function bridgeSpecificActionsOnTokenTransfer(
ERC677, /*_token*/
address _from,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,8 @@ pragma solidity 0.4.24;

import "./ERC677Bridge.sol";
import "../interfaces/IBurnableMintableERC677Token.sol";
import "../libraries/Bytes.sol";
import "./OtherSideBridgeStorage.sol";

contract ERC677BridgeForBurnableMintableToken is ERC677Bridge, OtherSideBridgeStorage {
function chooseReceiver(address _from, bytes _data) internal view returns (address recipient) {
recipient = _from;
if (_data.length > 0) {
require(_data.length == 20);
recipient = Bytes.bytesToAddress(_data);
require(recipient != address(0));
require(recipient != bridgeContractOnOtherSide());
}
}

contract ERC677BridgeForBurnableMintableToken is ERC677Bridge {
function bridgeSpecificActionsOnTokenTransfer(ERC677 _token, address _from, uint256 _value, bytes _data) internal {
IBurnableMintableERC677Token(_token).burn(_value);
fireEventOnTokenTransfer(chooseReceiver(_from, _data), _value);
Expand Down
2 changes: 1 addition & 1 deletion contracts/upgradeable_contracts/OtherSideBridgeStorage.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ contract OtherSideBridgeStorage is EternalStorage {
addressStorage[BRIDGE_CONTRACT] = _bridgeContract;
}

function bridgeContractOnOtherSide() public view returns (address) {
function bridgeContractOnOtherSide() internal view returns (address) {
return addressStorage[BRIDGE_CONTRACT];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,8 @@ contract BasicAMBErc677ToErc677 is
return isInitialized();
}

function chooseReceiver(address _from, bytes _data) internal view returns (address recipient) {
recipient = _from;
if (_data.length > 0) {
require(_data.length == 20);
recipient = Bytes.bytesToAddress(_data);
require(recipient != address(0));
require(recipient != mediatorContractOnOtherSide());
}
function bridgeContractOnOtherSide() internal view returns (address) {
return mediatorContractOnOtherSide();
}

function passMessage(address _from, uint256 _value) internal {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
pragma solidity 0.4.24;

import "./BasicAMBErc677ToErc677.sol";
import "../ERC677Bridge.sol";
import "openzeppelin-solidity/contracts/AddressUtils.sol";

contract ForeignAMBErc677ToErc677 is BasicAMBErc677ToErc677 {
function executeActionOnBridgedTokens(address _recipient, uint256 _value) internal {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ pragma solidity 0.4.24;

import "./BasicAMBErc677ToErc677.sol";
import "../../interfaces/IBurnableMintableERC677Token.sol";
import "openzeppelin-solidity/contracts/AddressUtils.sol";

contract HomeAMBErc677ToErc677 is BasicAMBErc677ToErc677 {
function executeActionOnBridgedTokens(address _recipient, uint256 _value) internal {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@ pragma solidity 0.4.24;

import "../BasicForeignBridge.sol";
import "../ERC20Bridge.sol";
import "../OtherSideBridgeStorage.sol";

contract ForeignBridgeErcToNative is BasicForeignBridge, ERC20Bridge {
contract ForeignBridgeErcToNative is BasicForeignBridge, ERC20Bridge, OtherSideBridgeStorage {
event RelayedMessage(address recipient, uint256 value, bytes32 transactionHash);
event UserRequestForAffirmation(address recipient, uint256 value);

bytes32 internal constant BRIDGE_CONTRACT = 0x71483949fe7a14d16644d63320f24d10cf1d60abecc30cc677a340e82b699dd2; // keccak256(abi.encodePacked("bridgeOnOtherSide"))

function initialize(
address _validatorContract,
address _erc20token,
Expand Down Expand Up @@ -79,14 +78,6 @@ contract ForeignBridgeErcToNative is BasicForeignBridge, ERC20Bridge {
revert();
}

function _setBridgeContractOnOtherSide(address _bridgeContract) internal {
addressStorage[BRIDGE_CONTRACT] = _bridgeContract;
}

function bridgeContractOnOtherSide() public view returns (address) {
return addressStorage[BRIDGE_CONTRACT];
}

function _relayTokens(address _sender, address _receiver, uint256 _amount) internal {
require(_receiver != address(0));
require(_receiver != address(this));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import "../../libraries/Message.sol";
import "../../upgradeability/EternalStorage.sol";
import "../../interfaces/IBlockReward.sol";
import "../BasicHomeBridge.sol";
import "../ERC677Bridge.sol";
import "../OverdrawManagement.sol";
import "./RewardableHomeBridgeErcToNative.sol";
import "../BlockRewardBridge.sol";
Expand Down

0 comments on commit fd80024

Please sign in to comment.