Disable per-token minPerTx (#582)

This commit is contained in:
Kirill Fedoseev 2021-03-10 21:46:11 +03:00 committed by GitHub
parent 08fd1e0129
commit eba5180291
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 11 deletions

View File

@ -82,7 +82,11 @@ contract BasicMultiTokenBridge is EternalStorage, Ownable {
* @return minimum amount on tokens that can be sent through the bridge in one transfer.
*/
function minPerTx(address _token) public view returns (uint256) {
return uintStorage[keccak256(abi.encodePacked("minPerTx", _token))];
uint256 limit = uintStorage[keccak256(abi.encodePacked("minPerTx", _token))];
if (_token == address(0)) {
return limit;
}
return limit > 0 ? 1 : 0;
}
/**

View File

@ -294,7 +294,7 @@ contract('ForeignMultiAMBErc20ToErc677', async accounts => {
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: user }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('5'), { from: owner }).should.be.rejected
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('5'), { from: owner }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('0.001'), { from: owner }).should.be.rejected
// await contract.setMaxPerTx(ZERO_ADDRESS, ether('0.001'), { from: owner }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: owner }).should.be.fulfilled
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: owner }).should.be.fulfilled
@ -335,7 +335,8 @@ contract('ForeignMultiAMBErc20ToErc677', async accounts => {
expect(await contract.dailyLimit(token.address)).to.be.bignumber.equal(ether('5'))
expect(await contract.maxPerTx(token.address)).to.be.bignumber.equal(ether('1.5'))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(ether('0.02'))
// expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(ether('0.02'))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal('1')
expect(await contract.executionDailyLimit(token.address)).to.be.bignumber.equal(ether('6'))
expect(await contract.executionMaxPerTx(token.address)).to.be.bignumber.equal(ether('1.6'))
})
@ -548,7 +549,8 @@ contract('ForeignMultiAMBErc20ToErc677', async accounts => {
expect(await contract.dailyLimit(token.address)).to.be.bignumber.equal(dailyLimit.mul(f1).div(f2))
expect(await contract.maxPerTx(token.address)).to.be.bignumber.equal(maxPerTx.mul(f1).div(f2))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(minPerTx.mul(f1).div(f2))
// expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(minPerTx.mul(f1).div(f2))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal('1')
expect(await contract.executionDailyLimit(token.address)).to.be.bignumber.equal(
executionDailyLimit.mul(f1).div(f2)
)

View File

@ -472,7 +472,8 @@ contract('HomeMultiAMBErc20ToErc677', async accounts => {
expect(await token.decimals()).to.be.bignumber.equal(decimals.toString())
expect(await contract.dailyLimit(token.address)).to.be.bignumber.equal(dailyLimit.mul(f1).div(f2))
expect(await contract.maxPerTx(token.address)).to.be.bignumber.equal(maxPerTx.mul(f1).div(f2))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(minPerTx.mul(f1).div(f2))
// expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(minPerTx.mul(f1).div(f2))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal('1')
expect(await contract.executionDailyLimit(token.address)).to.be.bignumber.equal(
executionDailyLimit.mul(f1).div(f2)
)
@ -539,7 +540,7 @@ contract('HomeMultiAMBErc20ToErc677', async accounts => {
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: user }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('5'), { from: owner }).should.be.rejected
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('5'), { from: owner }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('0.001'), { from: owner }).should.be.rejected
// await contract.setMaxPerTx(ZERO_ADDRESS, ether('0.001'), { from: owner }).should.be.rejected
await contract.setMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: owner }).should.be.fulfilled
await contract.setExecutionMaxPerTx(ZERO_ADDRESS, ether('1.5'), { from: owner }).should.be.fulfilled
@ -580,7 +581,8 @@ contract('HomeMultiAMBErc20ToErc677', async accounts => {
expect(await contract.dailyLimit(token.address)).to.be.bignumber.equal(ether('5'))
expect(await contract.maxPerTx(token.address)).to.be.bignumber.equal(ether('1.5'))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(ether('0.02'))
// expect(await contract.minPerTx(token.address)).to.be.bignumber.equal(ether('0.02'))
expect(await contract.minPerTx(token.address)).to.be.bignumber.equal('1')
expect(await contract.executionDailyLimit(token.address)).to.be.bignumber.equal(ether('6'))
expect(await contract.executionMaxPerTx(token.address)).to.be.bignumber.equal(ether('1.6'))
})
@ -609,7 +611,8 @@ contract('HomeMultiAMBErc20ToErc677', async accounts => {
await contract.onTokenTransfer(user, halfEther, '0x', { from: owner }).should.be.rejected
// must be within limits
await homeToken.transferAndCall(contract.address, ether('0.001'), '0x', { from: user }).should.be.rejected
// await homeToken.transferAndCall(contract.address, ether('1.001'), '0x', { from: user }).should.be.rejected
await homeToken.transferAndCall(contract.address, '0', '0x', { from: user }).should.be.rejected
// When
await homeToken.transferAndCall(contract.address, halfEther, '0x', { from: user }).should.be.fulfilled
@ -745,9 +748,11 @@ contract('HomeMultiAMBErc20ToErc677', async accounts => {
await homeToken.approve(contract.address, twoEthers, { from: user }).should.be.fulfilled
expect(await homeToken.allowance(user, contract.address)).to.be.bignumber.equal(twoEthers)
await contract.methods['relayTokens(address,address,uint256)'](homeToken.address, user, ether('0.0001'), {
from: user
}).should.be.rejected
// await contract.methods['relayTokens(address,address,uint256)'](homeToken.address, user, ether('0.0001'), {
// from: user
// }).should.be.rejected
await contract.methods['relayTokens(address,address,uint256)'](homeToken.address, user, '0', { from: user })
.should.be.rejected
})
})