Address Contract Partially Verified
Address
0x167C3a06255770569cB21323d3864d3886943Bea
Balance
0.004000 ETH
Nonce
1
Code Size
3152 bytes
Creator
0x60d26740...6f9A at tx 0x97223ab8...52dc33
Indexed Transactions
0
Contract Bytecode
3152 bytes
0x6080604052600436106100c25760003560e01c8063ac2e49361161007f578063e2f273bd11610059578063e2f273bd14610211578063ead6e52a14610231578063f851a44014610251578063fc0c546a1461028957600080fd5b8063ac2e4936146101a1578063cabc4dee146101d1578063e111f6b4146101f157600080fd5b80630c4844aa146100c75780637088f60f146100e957806374e7493b1461012e57806387188a001461014e5780638784bfd51461016e5780638f549fc614610181575b600080fd5b3480156100d357600080fd5b506100e76100e2366004610a9b565b6102bd565b005b3480156100f557600080fd5b50610119610104366004610a9b565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561013a57600080fd5b506100e7610149366004610a9b565b610308565b34801561015a57600080fd5b506100e7610169366004610a9b565b610337565b6100e761017c366004610ad0565b61037c565b34801561018d57600080fd5b506100e761019c366004610b0f565b61060b565b3480156101ad57600080fd5b506101196101bc366004610a9b565b60016020526000908152604090205460ff1681565b3480156101dd57600080fd5b506100e76101ec366004610b48565b6108b4565b3480156101fd57600080fd5b506100e761020c366004610a9b565b610900565b34801561021d57600080fd5b506100e761022c366004610b48565b610a03565b34801561023d57600080fd5b506100e761024c366004610b48565b610a4f565b34801561025d57600080fd5b50600054610271906001600160a01b031681565b6040516001600160a01b039091168152602001610125565b34801561029557600080fd5b506102717f000000000000000000000000dd646291d2fff52c75f27ccdadd0d4c2a24f37dd81565b6000546001600160a01b031633146102f05760405162461bcd60e51b81526004016102e790610b6a565b60405180910390fd5b6000908152600260205260409020805460ff19169055565b6000546001600160a01b031633146103325760405162461bcd60e51b81526004016102e790610b6a565b600555565b6000546001600160a01b031633146103615760405162461bcd60e51b81526004016102e790610b6a565b6000908152600260205260409020805460ff19166001179055565b60008381526002602052604090205460ff1661039757600080fd5b60008281526002602052604090205460ff166103eb5760405162461bcd60e51b815260206004820152601360248201527210da185a5b881b9bdd081cdd5c1c1bdc9d1959606a1b60448201526064016102e7565b6000341161043b5760405162461bcd60e51b815260206004820152601960248201527f466565206d757374206265207061696420696e2045746865720000000000000060448201526064016102e7565b6000620186a08560055461044f9190610b92565b6104599190610bbd565b9050803410156104a35760405162461bcd60e51b8152602060048201526015602482015274125b9cdd59999a58da595b9d08199959481c185a59605a1b60448201526064016102e7565b6040516323b872dd60e01b8152336004820152306024820152604481018690527f000000000000000000000000dd646291d2fff52c75f27ccdadd0d4c2a24f37dd6001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a9190610bdf565b61057e5760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60448201526064016102e7565b6003546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156105b8573d6000803e3d6000fd5b5060408051868152602081018590526001600160a01b03841681830152905133917fa3bbeb96dc9513fbdad8f049b5e25078f42aeb71a45863c274954da6c17fd6c0919081900360600190a25050505050565b6004546001600160a01b031633146106355760405162461bcd60e51b81526004016102e790610b6a565b60008381526002602052604090205460ff1661065057600080fd5b60008181526001602052604090205460ff16156106af5760405162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e20616c72656164792070726f63657373656400000060448201526064016102e7565b6040516370a0823160e01b815230600482015282907f000000000000000000000000dd646291d2fff52c75f27ccdadd0d4c2a24f37dd6001600160a01b0316906370a0823190602401602060405180830381865afa158015610715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107399190610c01565b101561077e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016102e7565b600081815260016020819052604091829020805460ff191690911790555163a9059cbb60e01b81526001600160a01b038581166004830152602482018490527f000000000000000000000000dd646291d2fff52c75f27ccdadd0d4c2a24f37dd169063a9059cbb906044016020604051808303816000875af1158015610808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082c9190610bdf565b61086a5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016102e7565b80846001600160a01b03167f78ef8056aa4d842c1cc53bf449de3dda50aca0621822909a9919c5c0c0b54d28846040516108a691815260200190565b60405180910390a350505050565b6000546001600160a01b031633146108de5760405162461bcd60e51b81526004016102e790610b6a565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461092a5760405162461bcd60e51b81526004016102e790610b6a565b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390527f000000000000000000000000dd646291d2fff52c75f27ccdadd0d4c2a24f37dd9091169063a9059cbb906044016020604051808303816000875af115801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c29190610bdf565b610a005760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b60448201526064016102e7565b50565b6000546001600160a01b03163314610a2d5760405162461bcd60e51b81526004016102e790610b6a565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163314610a795760405162461bcd60e51b81526004016102e790610b6a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060208284031215610aad57600080fd5b5035919050565b80356001600160a01b0381168114610acb57600080fd5b919050565b60008060008060808587031215610ae657600080fd5b843593506020850135925060408501359150610b0460608601610ab4565b905092959194509250565b60008060008060808587031215610b2557600080fd5b610b2e85610ab4565b966020860135965060408601359560600135945092505050565b600060208284031215610b5a57600080fd5b610b6382610ab4565b9392505050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b8082028115828204841417610bb757634e487b7160e01b600052601160045260246000fd5b92915050565b600082610bda57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610bf157600080fd5b81518015158114610b6357600080fd5b600060208284031215610c1357600080fd5b505191905056fea264697066735822122049397cc3301e30d3f38c43341d7b9a408114eb961f22611583c2115c7d7925d764736f6c63430008140033
Verified Source Code Partial Match
Compiler: v0.8.20+commit.a1b79de6
EVM: london
Optimization: Yes (200 runs)
Xitcoin_Bridge_Contract.sol 104 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function transfer(address recipient, uint256 amount) external returns (bool);
function balanceOf(address account) external view returns (uint256);
}
contract Xitcoin_Bridge_Contract {
IERC20 public immutable token;
address public admin;
mapping(bytes32 => bool) public processedTransactions;
mapping(uint256=> bool) public supportedChain;
address private companyWallet;
address private relayer;
uint256 private rate;
event TokensLocked(address indexed user, uint256 amount, uint256 destinationChainId, address destinationAddress);
event TokensUnlocked(address indexed user, uint256 amount, bytes32 indexed txHash);
modifier onlyAdmin() {
require(msg.sender == admin, "Not authorized");
_;
}
modifier onlyRelayer(){
require(msg.sender == relayer, "Not authorized");
_;
}
constructor(address _tokenAddress, address _companyWallet,address _relayer, uint256 _rate) {
token = IERC20(_tokenAddress);
admin = msg.sender;
companyWallet = _companyWallet;
relayer = _relayer;
rate = _rate;
}
function lockTokens(uint256 amount, uint256 sourceChainId, uint256 destinationChainId, address destinationAddress) external payable {
require(supportedChain[sourceChainId]);
require(supportedChain[destinationChainId], 'Chain not supported');
require(msg.value > 0, "Fee must be paid in Ether");
uint256 tax = (rate * amount) / 100000;
require(msg.value >= tax, "Insufficient fee paid");
require(token.transferFrom(msg.sender, address(this), amount), "Token transfer failed");
payable(companyWallet).transfer(tax);
emit TokensLocked(msg.sender, amount, destinationChainId, destinationAddress);
}
/**
* txHash Unique transaction hash from the source chain.
*/
function unlockTokens(address user,uint256 destinationChainId, uint256 amount, bytes32 txHash) external onlyRelayer {
require(supportedChain[destinationChainId]);
require(!processedTransactions[txHash], "Transaction already processed");
require(token.balanceOf(address(this)) >= amount, "Insufficient balance");
processedTransactions[txHash] = true;
require(token.transfer(user, amount), "Transfer failed");
emit TokensUnlocked(user, amount, txHash);
}
/**
* Withdraw mistakenly sent tokens (admin only).
*/
function withdrawExcessTokens(uint256 amount) external onlyAdmin {
require(token.transfer(admin, amount), "Withdraw failed");
}
function changeCompanyWallet(address _companyWallet) external onlyAdmin {
companyWallet = _companyWallet;
}
function changeRate(uint256 _rate) external onlyAdmin {
rate = _rate;
}
/**
* @dev Change the admin address (in case of relayer key rotation).
*/
function updateAdmin(address newAdmin) external onlyAdmin {
admin = newAdmin;
}
function addSupportedChain(uint256 chainId) external onlyAdmin{
supportedChain[chainId] = true;
}
function removeSupportedChain(uint256 chainId) external onlyAdmin{
supportedChain[chainId] = false;
}
function changeRelayerAddress(address _relayer) external onlyRelayer{
relayer = _relayer;
}
}
Read Contract
admin 0xf851a440 → address
processedTransactions 0xac2e4936 → bool
supportedChain 0x7088f60f → bool
token 0xfc0c546a → address
Write Contract 9 functions
These functions modify contract state and require a wallet transaction to execute.
addSupportedChain 0x87188a00
uint256 chainId
changeCompanyWallet 0xcabc4dee
address _companyWallet
changeRate 0x74e7493b
uint256 _rate
changeRelayerAddress 0xead6e52a
address _relayer
lockTokens 0x8784bfd5
uint256 amount
uint256 sourceChainId
uint256 destinationChainId
address destinationAddress
removeSupportedChain 0x0c4844aa
uint256 chainId
unlockTokens 0x8f549fc6
address user
uint256 destinationChainId
uint256 amount
bytes32 txHash
updateAdmin 0xe2f273bd
address newAdmin
withdrawExcessTokens 0xe111f6b4
uint256 amount
Recent Transactions
No transactions found for this address