mirror of
https://github.com/tornadocash/tornado-nova
synced 2024-02-02 14:53:56 +01:00
linter fixes
This commit is contained in:
parent
bd4500d7ff
commit
1f1964417a
@ -5,19 +5,15 @@ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
|||||||
import "@openzeppelin/contracts/access/Ownable.sol";
|
import "@openzeppelin/contracts/access/Ownable.sol";
|
||||||
|
|
||||||
contract WETH is ERC20 {
|
contract WETH is ERC20 {
|
||||||
|
constructor(string memory name, string memory ticker) ERC20(name, ticker) {}
|
||||||
constructor(
|
|
||||||
string memory name,
|
|
||||||
string memory ticker
|
|
||||||
) ERC20(name, ticker) {}
|
|
||||||
|
|
||||||
function deposit() external payable {
|
function deposit() external payable {
|
||||||
_mint(msg.sender, msg.value);
|
_mint(msg.sender, msg.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
function withdraw(uint256 value) external {
|
function withdraw(uint256 value) external {
|
||||||
_burn(msg.sender, value);
|
_burn(msg.sender, value);
|
||||||
(bool success, ) = msg.sender.call{value: value}("");
|
(bool success, ) = msg.sender.call{ value: value }("");
|
||||||
require(success, "WETH: ETH transfer failed");
|
require(success, "WETH: ETH transfer failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,11 @@ contract TornadoPool is MerkleTreeWithHistory, IERC20Receiver, ReentrancyGuard,
|
|||||||
if (_extData.extAmount < 0) {
|
if (_extData.extAmount < 0) {
|
||||||
require(_extData.recipient != address(0), "Can't withdraw to zero address");
|
require(_extData.recipient != address(0), "Can't withdraw to zero address");
|
||||||
if (_extData.isL1Withdrawal) {
|
if (_extData.isL1Withdrawal) {
|
||||||
token.transferAndCall(omniBridge, uint256(-_extData.extAmount), abi.encodePacked(l1Unwrapper, _extData.recipient, _extData.l1Fee));
|
token.transferAndCall(
|
||||||
|
omniBridge,
|
||||||
|
uint256(-_extData.extAmount),
|
||||||
|
abi.encodePacked(l1Unwrapper, _extData.recipient, _extData.l1Fee)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
token.transfer(_extData.recipient, uint256(-_extData.extAmount));
|
token.transfer(_extData.recipient, uint256(-_extData.extAmount));
|
||||||
}
|
}
|
||||||
|
@ -67,22 +67,22 @@ contract L1Unwrapper is WETHOmnibridgeRouter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Bridged callback function used for unwrapping received tokens.
|
* @dev Bridged callback function used for unwrapping received tokens.
|
||||||
* Can only be called by the associated Omnibridge contract.
|
* Can only be called by the associated Omnibridge contract.
|
||||||
* @param _token bridged token contract address, should be WETH.
|
* @param _token bridged token contract address, should be WETH.
|
||||||
* @param _value amount of bridged/received tokens.
|
* @param _value amount of bridged/received tokens.
|
||||||
* @param _data extra data passed alongside with relayTokensAndCall on the other side of the bridge.
|
* @param _data extra data passed alongside with relayTokensAndCall on the other side of the bridge.
|
||||||
* Should contain coins receiver address and L1 executer fee amount.
|
* Should contain coins receiver address and L1 executer fee amount.
|
||||||
*/
|
*/
|
||||||
function onTokenBridged(
|
function onTokenBridged(
|
||||||
address _token,
|
address _token,
|
||||||
uint256 _value,
|
uint256 _value,
|
||||||
bytes memory _data
|
bytes memory _data
|
||||||
) override external {
|
) external override {
|
||||||
require(_token == address(WETH));
|
require(_token == address(WETH));
|
||||||
require(msg.sender == address(bridge));
|
require(msg.sender == address(bridge));
|
||||||
require(_data.length == 52);
|
require(_data.length == 52);
|
||||||
|
|
||||||
WETH.withdraw(_value);
|
WETH.withdraw(_value);
|
||||||
|
|
||||||
uint256 l1Fee = BytesHelper.sliceToUint(_data, 20);
|
uint256 l1Fee = BytesHelper.sliceToUint(_data, 20);
|
||||||
|
@ -6,31 +6,30 @@ pragma solidity ^0.7.0;
|
|||||||
* @dev Helper methods to transform bytes to other solidity types.
|
* @dev Helper methods to transform bytes to other solidity types.
|
||||||
*/
|
*/
|
||||||
library BytesHelper {
|
library BytesHelper {
|
||||||
/**
|
/**
|
||||||
* @dev Truncate bytes array if its size is more than 20 bytes.
|
* @dev Truncate bytes array if its size is more than 20 bytes.
|
||||||
* NOTE: This function does not perform any checks on the received parameter.
|
* NOTE: This function does not perform any checks on the received parameter.
|
||||||
* Make sure that the _bytes argument has a correct length, not less than 20 bytes.
|
* Make sure that the _bytes argument has a correct length, not less than 20 bytes.
|
||||||
* A case when _bytes has length less than 20 will lead to the undefined behaviour,
|
* A case when _bytes has length less than 20 will lead to the undefined behaviour,
|
||||||
* since assembly will read data from memory that is not related to the _bytes argument.
|
* since assembly will read data from memory that is not related to the _bytes argument.
|
||||||
* @param _bytes to be converted to address type
|
* @param _bytes to be converted to address type
|
||||||
* @return addr address included in the firsts 20 bytes of the bytes array in parameter.
|
* @return addr address included in the firsts 20 bytes of the bytes array in parameter.
|
||||||
*/
|
*/
|
||||||
function bytesToAddress(bytes memory _bytes) internal pure returns (address addr) {
|
function bytesToAddress(bytes memory _bytes) internal pure returns (address addr) {
|
||||||
assembly {
|
assembly {
|
||||||
addr := mload(add(_bytes, 20))
|
addr := mload(add(_bytes, 20))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param _bytes it's 32 length slice to be converted to uint type
|
* @param _bytes it's 32 length slice to be converted to uint type
|
||||||
* @param _start start index of slice
|
* @param _start start index of slice
|
||||||
* @return x uint included in the 32 length slice of the bytes array in parameter.
|
* @return x uint included in the 32 length slice of the bytes array in parameter.
|
||||||
*/
|
*/
|
||||||
function sliceToUint(bytes memory _bytes, uint _start) internal pure returns (uint x)
|
function sliceToUint(bytes memory _bytes, uint256 _start) internal pure returns (uint256 x) {
|
||||||
{
|
require(_bytes.length >= _start + 32, "slicing out of range");
|
||||||
require(_bytes.length >= _start + 32, "slicing out of range");
|
assembly {
|
||||||
assembly {
|
x := mload(add(_bytes, add(0x20, _start)))
|
||||||
x := mload(add(_bytes, add(0x20, _start)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
12
src/index.js
12
src/index.js
@ -16,7 +16,17 @@ async function buildMerkleTree({ tornadoPool }) {
|
|||||||
return new MerkleTree(MERKLE_TREE_HEIGHT, leaves, { hashFunction: poseidonHash2 })
|
return new MerkleTree(MERKLE_TREE_HEIGHT, leaves, { hashFunction: poseidonHash2 })
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getProof({ inputs, outputs, tree, extAmount, fee, recipient, relayer, isL1Withdrawal, l1Fee }) {
|
async function getProof({
|
||||||
|
inputs,
|
||||||
|
outputs,
|
||||||
|
tree,
|
||||||
|
extAmount,
|
||||||
|
fee,
|
||||||
|
recipient,
|
||||||
|
relayer,
|
||||||
|
isL1Withdrawal,
|
||||||
|
l1Fee,
|
||||||
|
}) {
|
||||||
inputs = shuffle(inputs)
|
inputs = shuffle(inputs)
|
||||||
outputs = shuffle(outputs)
|
outputs = shuffle(outputs)
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ describe('TornadoPool', function () {
|
|||||||
await token.mint(sender.address, utils.parseEther('10000'))
|
await token.mint(sender.address, utils.parseEther('10000'))
|
||||||
|
|
||||||
const l1Token = await deploy('WETH', 'Wrapped ETH', 'WETH')
|
const l1Token = await deploy('WETH', 'Wrapped ETH', 'WETH')
|
||||||
await l1Token.deposit({value: utils.parseEther('3')})
|
await l1Token.deposit({ value: utils.parseEther('3') })
|
||||||
|
|
||||||
const amb = await deploy('MockAMB', gov.address, l1ChainId)
|
const amb = await deploy('MockAMB', gov.address, l1ChainId)
|
||||||
const omniBridge = await deploy('MockOmniBridge', amb.address)
|
const omniBridge = await deploy('MockOmniBridge', amb.address)
|
||||||
|
Loading…
Reference in New Issue
Block a user