From 77deee88b6d2373b6a1fa86996cda2ab51440645 Mon Sep 17 00:00:00 2001 From: Felix Leupold Date: Wed, 28 Feb 2024 11:05:33 +0200 Subject: [PATCH] Adding Chainalysis Oracle contract (#2442) # Description First step of enforcing an on-chain registry of banned users. This contract is going to be used in the following PR to check addresses which aren't allowed to place orders. # Changes - [x] Vendor and build contract artefacts ## How to test CI --- crates/contracts/artifacts/ChainalysisOracle.json | 1 + crates/contracts/build.rs | 5 +++++ crates/contracts/src/bin/vendor.rs | 6 +++++- crates/contracts/src/lib.rs | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 crates/contracts/artifacts/ChainalysisOracle.json diff --git a/crates/contracts/artifacts/ChainalysisOracle.json b/crates/contracts/artifacts/ChainalysisOracle.json new file mode 100644 index 0000000000..1d98ba5e5e --- /dev/null +++ b/crates/contracts/artifacts/ChainalysisOracle.json @@ -0,0 +1 @@ +{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"NonSanctionedAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"SanctionedAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"SanctionedAddressesAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"SanctionedAddressesRemoved","type":"event"},{"inputs":[{"internalType":"address[]","name":"newSanctions","type":"address[]"}],"name":"addToSanctionsList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isSanctioned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isSanctionedVerbose","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"removeSanctions","type":"address[]"}],"name":"removeFromSanctionsList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]} diff --git a/crates/contracts/build.rs b/crates/contracts/build.rs index c5421174f3..1b0efa8316 100644 --- a/crates/contracts/build.rs +++ b/crates/contracts/build.rs @@ -665,6 +665,11 @@ fn main() { builder.add_network_str(SEPOLIA, "0x86dcd3293C53Cf8EFd7303B57beb2a3F671dDE98") }); + // Chainalysis oracle for sanctions screening + generate_contract_with_config("ChainalysisOracle", |builder| { + builder.add_network_str(MAINNET, "0x40C57923924B5c5c5455c48D93317139ADDaC8fb") + }); + // Support contracts used for trade and token simulations. generate_contract("Trader"); generate_contract("Solver"); diff --git a/crates/contracts/src/bin/vendor.rs b/crates/contracts/src/bin/vendor.rs index c88d24dbb7..3cf2fc0a36 100644 --- a/crates/contracts/src/bin/vendor.rs +++ b/crates/contracts/src/bin/vendor.rs @@ -201,7 +201,11 @@ fn run() -> Result<()> { .github( "ISwaprPair", "levelkdev/dxswap-core/3511bab996096f9c9c9bc3af0d94222650fd1e40/build/IDXswapPair.json", - )?; + )? + .manual( + "ChainalysisOracle", + "Chainalysis does not publish its code", + ); Ok(()) } diff --git a/crates/contracts/src/lib.rs b/crates/contracts/src/lib.rs index 8644f46934..8dc2e55d34 100644 --- a/crates/contracts/src/lib.rs +++ b/crates/contracts/src/lib.rs @@ -58,6 +58,7 @@ include_contracts! { IUniswapV3Factory; IZeroEx; PancakeRouter; + ChainalysisOracle; SushiSwapRouter; SwaprRouter; TestnetUniswapV2Router02;