Skip to content

Commit

Permalink
admin struct & removeAdminAddress code
Browse files Browse the repository at this point in the history
remove, register, add admin + onlyAdmin modifier

add relayer functions

helper function to avoid repeat of code

verifyRelayer and relayerExistsMap

updateParam changes

Remove unwanted code and variables

Remove old code

Formatting + efficient return for verify function

decouple registered and nonregistered admins, remove relayer before deleting, correct address size,

add old modifier checks before adding relayer

seed with current whitelists.todo: add relayers

Refactor: replace admin with manager

contract and exist checks inside function

remove onlyWhitelabelRelayer for the most part.

Remove register unregister from template file

isRelayer, not verifyRelayer

isContract check for manager

override in isRelayer

refactor naming

addRelayer -> editRelayer

remove most compilation errors apart from transfer

compilation error fix: payable+map

extra payables

modify templates

fix bugs in contract

feat: add foundry test (#194)

* add foundry test and clean unused files

* update readme

Remove unneeded modifier + properly remove relayer

updateRelayer event and no need for removeRelayer

For smooth transition and let old relayers exit

Only use updateRelayerEvent + Refacoring functions

Better naming of some maps

update only once

Remove repeated event

Remove onlyAllowedParty + correct var order

remove deposit + bring back old withdraw

test for adding new param which doesn't work

correct the test

testunregister

Check emit event

remove manager and ismanger, isrelayer test

removeManagerByHimself test + comments

testCurrentRelayerTransition() and update()

Remove manager struct

Refactor + remove unwanted functions

Remove check that is not needed

Refactor to less confusing name

Ensure manager isn't already registered

bug info

Test for relayer address 0 which had a bug

Remove todo which is already done now

Combine to one manager struct

Remove dues

remove unwanted code

ensure 0 address is not a relayer

remove deposit and dues code in updateParam

template file update + correct whitelist mainnet addr

check contract first

refactor

Refactor even names and regenerate interface

payable manager not required

bug fix of twice adding of same relayer + test

emit events in initialisation as well

update the template file based on recent changes

public to internal + remove unused event

Test to ensure a contract can't be a relayer

2 step relayer registration. todo: test update

Fix testAddManager

Fix the rest of the tests

Remove unused comments

check for code and proxy relayer + test

edge case where manager gets removed before accept

name change to be consistent

delete provisional relayer when relayer is deleted

Check for correct manager

update comment

dlt managerToProvisionalRelayer when dltng relayer

address pr comments

update template

remove check for contracts on relayer manager
  • Loading branch information
emailtovamos authored and unclezoro committed Apr 20, 2023
1 parent 1d9c1e2 commit fdf7dc9
Show file tree
Hide file tree
Showing 71 changed files with 4,696 additions and 23,518 deletions.
18 changes: 9 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
node_modules/
build/
.idea
pids
logs
out/
.idea/
pids/
logs/
cache/

contracts/flattened/*.sol

#Hardhat files
cache
artifacts
# foundry lib
lib/forge-std/

.env

types
typechain-types
package-lock.json
yarn.lock
3 changes: 0 additions & 3 deletions .prettierignore

This file was deleted.

16 changes: 0 additions & 16 deletions .prettierrc

This file was deleted.

9 changes: 0 additions & 9 deletions .soliumignore

This file was deleted.

9 changes: 0 additions & 9 deletions .soliumrc.json

This file was deleted.

73 changes: 38 additions & 35 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,65 +4,68 @@ This repo hold all the genesis contracts on Binance Smart chain. More details in

## Prepare

Install dependency:
Install node.js dependency:
```shell script
npm install
```
```

Node: v12.18.3
Truffle: Truffle v5.1.31
Solc: 0.6.4+commit.1dca32f3.Darwin.appleclang
Ganache-cli: v6.10.1
Install foundry:
```shell script
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge install --no-git --no-commit foundry-rs/[email protected]
```

Please make sure your dependency version is as follows:

## unit test
Node: v12.18.3

Generate contracts for testing:
```shell script
# the first account of ganache
node generate-system.js --mock true --network local
node generate-systemReward.js --mock true
node generate-validatorset.js --mock true
node generate-slash.js --mock true
node generate-crosschain.js --mock true
node generate-tokenhub.js --mock true
node generate-relayerhub.js --mock true
node generate-tendermintlightclient.js --mock true
node generate-relayerincentivizecontract.js --roundSize 30 --maximumWeight 3 --mock true
```
Truffle: v5.1.31

Start ganache:
```shell script
ganache-cli --mnemonic 'clock radar mass judge dismiss just intact mind resemble fringe diary casino' --gasLimit 100000000 -e 10000 --allowUnlimitedContractSize
```
Solc: 0.6.4+commit.1dca32f3

Run truffle test:
```shell script
truffle compile
truffle migrate
truffle test
## Unit test

Add follow line to .env file in project dir, replace `archive_node` with a valid bsc mainnet node url which should be in archive mode:

```text
RPC_BSC=${archive_node}
```

Run hardhat test:
You can get a free archive node endpoint from https://nodereal.io/.

Run forge test:
```shell script
npx hardhat compile
npx hardhat test
forge test
```

Flatten all system contracts:
## Flatten all system contracts

```shell script
npm run flatten
```

## how to generate genesis file.

All system contracts will be flattened and output into `${workspace}/contracts/flattened/`.

## How to generate genesis file

1. Edit `init_holders.js` file to alloc the initial BNB holder.
2. Edit `validators.js` file to alloc the initial validator set.
3. Edit `generate-validatorset.js` file to change `fromChainId` and `toChainId`,
4. Edit `generate-tokenhub.js` file to change `refundRelayReward`, `minimumRelayFee` and `maxGasForCallingBEP20`.
5. Edit `generate-tendermintlightclient.js` file to change `chainID` and `initConsensusStateBytes`.
6. run ` node generate-genesis.js` will generate genesis.json

## How to update contract interface for test

```shell script
// get metadata
forge build

// generate interface
cast interface ${workspace}/out/{contract_name}.sol/${contract_name}.json -p ^0.8.10 -n ${contract_name} > ${workspace}/lib/interface/I${contract_name}.sol
```

## License

The library is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0),
Expand Down
2 changes: 1 addition & 1 deletion contracts/CrossChain.sol
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ contract CrossChain is System, ICrossChain, IParamSubscriber{
return (true, packageType, relayFee, msgBytes);
}

function handlePackage(bytes calldata payload, bytes calldata proof, uint64 height, uint64 packageSequence, uint8 channelId) onlyInit onlyRelayer onlyWhitelabelRelayer
function handlePackage(bytes calldata payload, bytes calldata proof, uint64 height, uint64 packageSequence, uint8 channelId) onlyInit onlyRelayer
sequenceInOrder(packageSequence, channelId) blockSynced(height) channelSupported(channelId) headerInOrder(height, channelId) external {
bytes memory payloadLocal = payload; // fix error: stack too deep, try removing local variables
bytes memory proofLocal = proof; // fix error: stack too deep, try removing local variables
Expand Down
8 changes: 3 additions & 5 deletions contracts/CrossChain.template
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ import "./lib/Memory.sol";
import "./lib/BytesToTypes.sol";
import "./interface/IParamSubscriber.sol";
import "./System.sol";
{% if mock %}import "./mock/MerkleProof.sol";
{% else %}import "./MerkleProof.sol";
{% endif %}
import "./MerkleProof.sol";

contract CrossChain is System, ICrossChain, IParamSubscriber{

Expand Down Expand Up @@ -201,7 +199,7 @@ contract CrossChain is System, ICrossChain, IParamSubscriber{
return (true, packageType, relayFee, msgBytes);
}

function handlePackage(bytes calldata payload, bytes calldata proof, uint64 height, uint64 packageSequence, uint8 channelId) onlyInit onlyRelayer onlyWhitelabelRelayer
function handlePackage(bytes calldata payload, bytes calldata proof, uint64 height, uint64 packageSequence, uint8 channelId) onlyInit onlyRelayer
sequenceInOrder(packageSequence, channelId) blockSynced(height) channelSupported(channelId) headerInOrder(height, channelId) external {
bytes memory payloadLocal = payload; // fix error: stack too deep, try removing local variables
bytes memory proofLocal = proof; // fix error: stack too deep, try removing local variables
Expand Down Expand Up @@ -328,4 +326,4 @@ contract CrossChain is System, ICrossChain, IParamSubscriber{
}
emit paramChange(key, value);
}
}
}
18 changes: 0 additions & 18 deletions contracts/Migrations.sol

This file was deleted.

Loading

0 comments on commit fdf7dc9

Please sign in to comment.