Address Contract Partially Verified
Address
0x596deCbB3e433E189144f4439b85588528EB93d3
Balance
0 ETH
Nonce
1
Code Size
3415 bytes
Creator
0x839F8516...6496 at tx 0x6c362ea4...86e26f
Indexed Transactions
Index loading...
Contract Bytecode
3415 bytes
0x6080604052600436106100825763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663106e6290811461008757806322f3e2d4146100b057806371907f17146100d9578063a98ad46c1461010a578063acec338a1461011f578063c9630cb014610139578063ece5313214610154575b600080fd5b34801561009357600080fd5b506100ae600160a060020a0360043516602435604435610175565b005b3480156100bc57600080fd5b506100c56105e2565b604080519115158252519081900360200190f35b3480156100e557600080fd5b506100ee610603565b60408051600160a060020a039092168252519081900360200190f35b34801561011657600080fd5b506100ee610612565b34801561012b57600080fd5b506100ae6004351515610621565b34801561014557600080fd5b506100ae60043560243561074a565b34801561016057600080fd5b506100ae600160a060020a0360043516610ab9565b60015474010000000000000000000000000000000000000000900460ff1615156101e9576040805160e560020a62461bcd02815260206004820152601160248201527f696e61637469766520636f6e7472616374000000000000000000000000000000604482015290519081900360640190fd5b60008054604080517f24d7806c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216926324d7806c926024808401936020939083900390910190829087803b15801561025057600080fd5b505af1158015610264573d6000803e3d6000fd5b505050506040513d602081101561027a57600080fd5b505180610316575060008054604080517fe9d8dbfd0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169263e9d8dbfd926024808401936020939083900390910190829087803b1580156102e957600080fd5b505af11580156102fd573d6000803e3d6000fd5b505050506040513d602081101561031357600080fd5b50515b151561036c576040805160e560020a62461bcd02815260206004820152601160248201527f6e6f742061646d696e2f73657276696365000000000000000000000000000000604482015290519081900360640190fd5b82600160a060020a03811615156103cd576040805160e560020a62461bcd02815260206004820152600c60248201527f6e756c6c20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b60008311610425576040805160e560020a62461bcd02815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290518592600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561048a57600080fd5b505af115801561049e573d6000803e3d6000fd5b505050506040513d60208110156104b457600080fd5b5051101561050c576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f7420656e6f75676800000000000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152602482018790529151919092169163a9059cbb91604480830192600092919082900301818387803b15801561057a57600080fd5b505af115801561058e573d6000803e3d6000fd5b505060408051600160a060020a03881681526020810187905280820186905290517fa31f9bc795b6f16a3ff93f2dbab806d3af64e30fc4f1240df604f670687544ba9350908190036060019150a150505050565b60015474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a031681565b600154600160a060020a031681565b60008054604080517f24d7806c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216926324d7806c926024808401936020939083900390910190829087803b15801561068857600080fd5b505af115801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b5051151561070a576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f742061646d696e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018054911515740100000000000000000000000000000000000000000274ff000000000000000000000000000000000000000019909216919091179055565b60015474010000000000000000000000000000000000000000900460ff1615156107be576040805160e560020a62461bcd02815260206004820152601160248201527f696e61637469766520636f6e7472616374000000000000000000000000000000604482015290519081900360640190fd5b60008211610816576040805160e560020a62461bcd02815260206004820152600b60248201527f7a65726f20616d6f756e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015290518492600160a060020a0316916370a082319160248083019260209291908290030181600087803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050506040513d60208110156108a557600080fd5b505110156108fd576040805160e560020a62461bcd02815260206004820152600a60248201527f6e6f7420656e6f75676800000000000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290518492600160a060020a03169163dd62ed3e9160448083019260209291908290030181600087803b15801561096857600080fd5b505af115801561097c573d6000803e3d6000fd5b505050506040513d602081101561099257600080fd5b505110156109ea576040805160e560020a62461bcd02815260206004820152600f60248201527f636865636b20616c6c6f77616e63650000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a03909216916323b872dd9160648082019260009290919082900301818387803b158015610a5c57600080fd5b505af1158015610a70573d6000803e3d6000fd5b5050604080513381526020810186905280820185905290517f2258838f8b662cce69d203abcb568611b958e51d3c200f6fb5852f29e781c1d29350908190036060019150a15050565b60008054604080517f24d7806c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216916324d7806c9160248082019260209290919082900301818787803b158015610b1f57600080fd5b505af1158015610b33573d6000803e3d6000fd5b505050506040513d6020811015610b4957600080fd5b50511515610ba1576040805160e560020a62461bcd02815260206004820152600960248201527f6e6f742061646d696e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a0381161515610c02576040805160e560020a62461bcd02815260206004820152600c60248201527f6e756c6c20616464726573730000000000000000000000000000000000000000604482015290519081900360640190fd5b600154604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a03909216916370a08231916024808201926020929091908290030181600087803b158015610c6857600080fd5b505af1158015610c7c573d6000803e3d6000fd5b505050506040513d6020811015610c9257600080fd5b505191506000821115610d2657600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038681166004830152602482018690529151919092169163a9059cbb91604480830192600092919082900301818387803b158015610d0d57600080fd5b505af1158015610d21573d6000803e3d6000fd5b505050505b5050505600a165627a7a72305820c9e27b0e80654d76ca5fc4467600c2dc191284f4d81e22cdb487ceff6954f27e0029
Verified Source Code Partial Match
Compiler: v0.4.25+commit.59dbf8f1
EVM: byzantium
Optimization: Yes (200 runs)
CyberbridgeUSDT.sol 186 lines
pragma solidity ^0.4.25;
// Access controls access contracts' private methods
contract Access {
mapping(address => bool) private _admins;
mapping(address => bool) private _services;
modifier onlyAdmin() {
require(_admins[msg.sender], "not admin");
_;
}
modifier onlyAdminOrService() {
require(_admins[msg.sender] || _services[msg.sender], "not admin/service");
_;
}
constructor() public {
_admins[msg.sender] = true;
}
function addAdmin(address addr) public onlyAdmin {
_admins[addr] = true;
}
function removeAdmin(address addr) public onlyAdmin {
_admins[addr] = false;
}
function isAdmin(address addr) public view returns (bool) {
return _admins[addr];
}
function addService(address addr) public onlyAdmin {
_services[addr] = true;
}
function removeService(address addr) public onlyAdmin {
_services[addr] = false;
}
function isService(address addr) public view returns (bool) {
return _services[addr];
}
}
// CyberbridgeETH receives ETH deposits
contract CyberbridgeETH {
Access public access;
bool public isActive = true;
event onDeposit(address from, uint256 amount, bytes32 token);
event onWithdraw(address to, uint256 amount, bytes32 token);
modifier onlyAdmin() {
require(access.isAdmin(msg.sender), "not admin");
_;
}
modifier onlyAdminOrService() {
require(access.isAdmin(msg.sender) || access.isService(msg.sender), "not admin/service");
_;
}
modifier onlyValidAddress(address addr) {
require(addr != address(0x0), "null address");
_;
}
modifier onlyActiveContract() {
require(isActive, "inactive contract");
_;
}
constructor(address accessAddr) public onlyValidAddress(accessAddr) {
access = Access(accessAddr);
}
function setActive(bool active) public onlyAdmin {
isActive = active;
}
function refill() public onlyAdmin payable { }
function drain(address recipientAddr) public onlyAdmin onlyValidAddress(recipientAddr) {
uint256 ethAmount = address(this).balance;
if (ethAmount > 0) {
recipientAddr.transfer(ethAmount);
}
}
// ---
function deposit(bytes32 token) public onlyActiveContract payable {
require(msg.value > 0, "zero amount");
emit onDeposit(msg.sender, msg.value, token);
}
function withdraw(address to, uint256 amount, bytes32 token) public onlyActiveContract onlyAdminOrService onlyValidAddress(to) {
require(amount > 0, "zero amount");
require(address(this).balance >= amount, "not enough funds");
to.transfer(amount);
emit onWithdraw(to, amount, token);
}
}
// CyberbridgeUSDT receives USDT deposits
contract CyberbridgeUSDT {
Access public access;
TetherToken public usdtToken;
bool public isActive = true;
event onDeposit(address from, uint256 amount, bytes32 token);
event onWithdraw(address to, uint256 amount, bytes32 token);
modifier onlyAdmin() {
require(access.isAdmin(msg.sender), "not admin");
_;
}
modifier onlyAdminOrService() {
require(access.isAdmin(msg.sender) || access.isService(msg.sender), "not admin/service");
_;
}
modifier onlyValidAddress(address addr) {
require(addr != address(0x0), "null address");
_;
}
modifier onlyActiveContract() {
require(isActive, "inactive contract");
_;
}
constructor(address accessAddr, address usdtAddr) public onlyValidAddress(accessAddr) onlyValidAddress(usdtAddr) {
access = Access(accessAddr);
usdtToken = TetherToken(usdtAddr);
}
function setActive(bool active) public onlyAdmin {
isActive = active;
}
function drain(address recipientAddr) public onlyAdmin onlyValidAddress(recipientAddr) {
uint256 amount = usdtToken.balanceOf(address(this));
if (amount > 0) {
usdtToken.transfer(recipientAddr, amount);
}
}
// ---
function deposit(uint256 usdtAmount, bytes32 token) public onlyActiveContract {
require(usdtAmount > 0, "zero amount");
require(usdtToken.balanceOf(msg.sender) >= usdtAmount, "not enough");
require(usdtToken.allowance(msg.sender, address(this)) >= usdtAmount, "check allowance");
usdtToken.transferFrom(msg.sender, address(this), usdtAmount);
emit onDeposit(msg.sender, usdtAmount, token);
}
function withdraw(address to, uint256 amount, bytes32 token) public onlyActiveContract onlyAdminOrService onlyValidAddress(to) {
require(amount > 0, "zero amount");
require(usdtToken.balanceOf(address(this)) >= amount, "not enough");
usdtToken.transfer(to, amount);
emit onWithdraw(to, amount, token);
}
}
contract TetherToken {
function balanceOf(address _who) public constant returns (uint);
function transfer(address _to, uint _value) public;
function transferFrom(address _from, address _to, uint _value) public;
function allowance(address _owner, address _spender) public constant returns (uint remaining);
}
Read Contract
access 0x71907f17 → address
isActive 0x22f3e2d4 → bool
usdtToken 0xa98ad46c → address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
deposit 0xc9630cb0
uint256 usdtAmount
bytes32 token
drain 0xece53132
address recipientAddr
setActive 0xacec338a
bool active
withdraw 0x106e6290
address to
uint256 amount
bytes32 token
Token Balances (1)
View Transfers →Recent Transactions
Transaction index is loading. Only unfinalized transactions are shown while the index starts up.