Add gasPrice on initialize foreign erc-to-native

This commit is contained in:
Gerardo Nardelli 2018-09-24 10:23:05 -03:00
parent fdf9d39abd
commit 2a5a199152
4 changed files with 18 additions and 8 deletions

View File

@ -14,15 +14,18 @@ contract ForeignBridgeErcToNative is BasicBridge, BasicForeignBridge {
function initialize(
address _validatorContract,
address _erc20token,
uint256 _requiredBlockConfirmations
uint256 _requiredBlockConfirmations,
uint256 _gasPrice
) public returns(bool) {
require(!isInitialized(), "already initialized");
require(_validatorContract != address(0), "address cannot be empty");
require(_requiredBlockConfirmations != 0, "requiredBlockConfirmations cannot be 0");
require(_gasPrice > 0);
addressStorage[keccak256(abi.encodePacked("validatorContract"))] = _validatorContract;
setErc20token(_erc20token);
uintStorage[keccak256(abi.encodePacked("deployedAtBlock"))] = block.number;
uintStorage[keccak256(abi.encodePacked("requiredBlockConfirmations"))] = _requiredBlockConfirmations;
uintStorage[keccak256(abi.encodePacked("gasPrice"))] = _gasPrice;
setInitialize(true);
return isInitialized();
}

View File

@ -10,6 +10,7 @@ const BridgeValidators = require('../../../build/contracts/BridgeValidators.json
const ForeignBridge = require('../../../build/contracts/ForeignBridgeErcToNative.json')
const VALIDATORS = env.VALIDATORS.split(' ')
const FOREIGN_GAS_PRICE = Web3Utils.toWei(env.FOREIGN_GAS_PRICE, 'gwei')
const {
DEPLOYMENT_ACCOUNT_PRIVATE_KEY,
@ -142,7 +143,8 @@ async function deployForeign() {
.initialize(
storageValidatorsForeign.options.address,
ERC20_TOKEN_ADDRESS,
FOREIGN_REQUIRED_BLOCK_CONFIRMATIONS
FOREIGN_REQUIRED_BLOCK_CONFIRMATIONS,
FOREIGN_GAS_PRICE
)
.encodeABI({ from: DEPLOYMENT_ACCOUNT_ADDRESS })
const txInitializeBridge = await sendRawTxForeign({

View File

@ -8,6 +8,7 @@ const { ERROR_MSG, ZERO_ADDRESS } = require('../setup');
const { createMessage, sign, signatureToVRS } = require('../helpers/helpers');
const halfEther = web3.toBigNumber(web3.toWei(0.5, "ether"));
const requireBlockConfirmations = 8;
const gasPrice = web3.toWei('1', 'gwei');
contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
let validatorContract, authorities, owner, token;
@ -29,7 +30,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
false.should.be.equal(await foreignBridge.isInitialized())
'0'.should.be.bignumber.equal(await foreignBridge.requiredBlockConfirmations())
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations);
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations, gasPrice);
token.address.should.be.equal(await foreignBridge.erc20token());
true.should.be.equal(await foreignBridge.isInitialized())
@ -37,6 +38,8 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
token.address.should.be.equal(await foreignBridge.erc20token());
(await foreignBridge.deployedAtBlock()).should.be.bignumber.above(0);
requireBlockConfirmations.should.be.bignumber.equal(await foreignBridge.requiredBlockConfirmations())
const contractGasPrice = await foreignBridge.gasPrice()
contractGasPrice.should.be.bignumber.equal(gasPrice)
const bridgeMode = '0x18762d46' // 4 bytes of keccak256('erc-to-erc-core')
const mode = await foreignBridge.getBridgeMode();
mode.should.be.equal(bridgeMode)
@ -53,7 +56,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
beforeEach(async () => {
foreignBridge = await ForeignBridge.new()
token = await ERC677BridgeToken.new("Some ERC20", "RSZT", 18);
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations);
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations, gasPrice);
await token.mint(foreignBridge.address,value);
})
@ -145,7 +148,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
ownerOfValidatorContract = accounts[3]
await multisigValidatorContract.initialize(2, twoAuthorities, ownerOfValidatorContract, {from: ownerOfValidatorContract})
foreignBridgeWithMultiSignatures = await ForeignBridge.new()
await foreignBridgeWithMultiSignatures.initialize(multisigValidatorContract.address, token.address, requireBlockConfirmations, {from: ownerOfValidatorContract});
await foreignBridgeWithMultiSignatures.initialize(multisigValidatorContract.address, token.address, requireBlockConfirmations, gasPrice, {from: ownerOfValidatorContract});
await token.mint(foreignBridgeWithMultiSignatures.address,value);
})
@ -207,7 +210,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
await foreignBridgeProxy.upgradeTo('1', foreignBridgeImpl.address).should.be.fulfilled;
foreignBridgeProxy = await ForeignBridge.at(foreignBridgeProxy.address);
await foreignBridgeProxy.initialize(validatorsProxy.address, token.address, requireBlockConfirmations)
await foreignBridgeProxy.initialize(validatorsProxy.address, token.address, requireBlockConfirmations, gasPrice)
// Deploy V2
let foreignImplV2 = await ForeignBridgeV2.new();
@ -227,7 +230,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
const storageProxy = await EternalStorageProxy.new().should.be.fulfilled;
const foreignBridge = await ForeignBridge.new();
const data = foreignBridge.initialize.request(fakeValidatorsAddress, fakeTokenAddress, requireBlockConfirmations).params[0].data
const data = foreignBridge.initialize.request(fakeValidatorsAddress, fakeTokenAddress, requireBlockConfirmations, gasPrice).params[0].data
await storageProxy.upgradeToAndCall('1', foreignBridge.address, data).should.be.fulfilled;
@ -243,7 +246,7 @@ contract('ForeignBridge_ERC20_to_Native', async (accounts) => {
token = await ERC677BridgeToken.new("Some ERC20", "RSZT", 18);
const foreignBridge = await ForeignBridge.new();
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations);
await foreignBridge.initialize(validatorContract.address, token.address, requireBlockConfirmations, gasPrice);
const tokenSecond = await ERC677BridgeToken.new("Roman Token", "RST", 18);
await tokenSecond.mint(accounts[0], halfEther).should.be.fulfilled;

View File

@ -42,6 +42,8 @@ contract('HomeBridge_ERC20_to_Native', async (accounts) => {
'3'.should.be.bignumber.equal(await homeContract.dailyLimit())
'2'.should.be.bignumber.equal(await homeContract.maxPerTx())
'1'.should.be.bignumber.equal(await homeContract.minPerTx())
const contractGasPrice = await homeContract.gasPrice()
contractGasPrice.should.be.bignumber.equal(gasPrice)
const bridgeMode = '0x18762d46' // 4 bytes of keccak256('erc-to-native-core')
const mode = await homeContract.getBridgeMode();
mode.should.be.equal(bridgeMode)