Address Contract Partially Verified
Address
0x4c4Cc6a0573db5823ECAA1d1d65EB64E5E0E5F01
Balance
0 ETH
Nonce
1
Code Size
6482 bytes
Creator
0x782436a2...FD8f at tx 0xdc1f83a7...73dc2d
Indexed Transactions
0
Contract Bytecode
6482 bytes
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80639c52a7f11161008c578063bf353dbb11610066578063bf353dbb14610372578063f1e4c866146103ca578063fc0c546a146103f8578063ff2050ec14610442576100cf565b80639c52a7f1146102a4578063abc6fd0b146102e8578063bd77ac2c1461031b576100cf565b806322b2e1b5146100d45780634a58ca0e1461013757806354f3e0831461016557806365fae35e146101c85780636ebc0af11461020c5780639adc339d14610256575b600080fd5b610135600480360360c08110156100ea57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506104a5565b005b6101636004803603602081101561014d57600080fd5b8101908080359060200190929190505050610680565b005b6101c6600480360360c081101561017b57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610a2f565b005b61020a600480360360208110156101de57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfd565b005b610214610d4c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102a26004803603604081101561026c57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d72565b005b6102e6600480360360208110156102ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ea3565b005b6102f0610ff2565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6103476004803603602081101561033157600080fd5b8101908080359060200190929190505050611253565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b6103b46004803603602081101561038857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114bd565b6040518082815260200191505060405180910390f35b6103f6600480360360208110156103e057600080fd5b81019080803590602001909291905050506114d5565b005b6104006117a9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104a3600480360360c081101561045857600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506117cf565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16888860018989896040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001878152602001868152602001851515151581526020018460ff1660ff16815260200183815260200182815260200198505050505050505050600060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b50505050610678866114d5565b505050505050565b60008060006004359250602435915034905060011515600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312d42835336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561073557600080fd5b505afa158015610749573d6000803e3d6000fd5b505050506040513d602081101561075f57600080fd5b81019080805190602001909291905050501515146107e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f757365722d6e6f742d616c6c6f7765642d746f2d686f6c642d746f6b656e000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312d42835336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561088457600080fd5b505afa158015610898573d6000803e3d6000fd5b505050506040513d60208110156108ae57600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632edd297633866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561096957600080fd5b505af115801561097d573d6000803e3d6000fd5b5050505081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5a6b10f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9757600080fd5b505afa158015610aab573d6000803e3d6000fd5b505050506040513d6020811015610ac157600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663d505accf33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688888888886040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff168152602001838152602001828152602001975050505050505050600060405180830381600087803b158015610bd457600080fd5b505af1158015610be8573d6000803e3d6000fd5b50505050610bf5866114d5565b505050505050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c4857600080fd5b60008060006004359250602435915034905060016000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbd57600080fd5b7f7472616e63686500000000000000000000000000000000000000000000000000821415610e2b5780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9f565b7f746f6b656e000000000000000000000000000000000000000000000000000000821415610e995780600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9e565b600080fd5b5b5050565b60016000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610eee57600080fd5b60008060006004359250602435915034905060008060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b60008060008060011515600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312d42835336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d60208110156110c557600080fd5b810190808051906020019092919050505015151461114b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f757365722d6e6f742d616c6c6f7765642d746f2d686f6c642d746f6b656e000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c8ce890336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050608060405180830381600087803b1580156111ec57600080fd5b505af1158015611200573d6000803e3d6000fd5b505050506040513d608081101561121657600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190505050935093509350935090919293565b60008060008060011515600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312d42835336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156112fc57600080fd5b505afa158015611310573d6000803e3d6000fd5b505050506040513d602081101561132657600080fd5b81019080805190602001909291905050501515146113ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f757365722d6e6f742d616c6c6f7765642d746f2d686f6c642d746f6b656e000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637f3bd56e33876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050608060405180830381600087803b15801561145557600080fd5b505af1158015611469573d6000803e3d6000fd5b505050506040513d608081101561147f57600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919050505093509350935093509193509193565b60006020528060005260406000206000915090505481565b60008060006004359250602435915034905060011515600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312d42835336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b810190808051906020019092919050505015151461163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f757365722d6e6f742d616c6c6f7765642d746f2d686f6c642d746f6b656e000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166374299b5a33866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156116e357600080fd5b505af11580156116f7573d6000803e3d6000fd5b5050505081833373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168460003660405180848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505094505050505060405180910390a450505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf33600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688888888886040518863ffffffff1660e01b8152600401808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018460ff1660ff168152602001838152602001828152602001975050505050505050600060405180830381600087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b5050505061191586610680565b50505050505056fea265627a7a72315820116fdff2c3df8bd8de313a8d8a2f8549c1a6c7b51c12775b5df5974bd869db0064736f6c634300050f0032
Verified Source Code Partial Match
Compiler: v0.5.15+commit.6a57276f
EVM: istanbul
Optimization: No
Operator.sol 175 lines
// Verified using https://dapp.tools
// hevm: flattened sources of src/lender/operator.sol
pragma solidity >=0.5.15 >=0.5.15 <0.6.0;
////// lib/tinlake-auth/lib/ds-note/src/note.sol
/// note.sol -- the `note' modifier, for logging calls as events
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
/* pragma solidity >=0.5.15; */
contract DSNote {
event LogNote(
bytes4 indexed sig,
address indexed guy,
bytes32 indexed foo,
bytes32 indexed bar,
uint256 wad,
bytes fax
) anonymous;
modifier note {
bytes32 foo;
bytes32 bar;
uint256 wad;
assembly {
foo := calldataload(4)
bar := calldataload(36)
wad := callvalue()
}
_;
emit LogNote(msg.sig, msg.sender, foo, bar, wad, msg.data);
}
}
////// lib/tinlake-auth/src/auth.sol
// Copyright (C) Centrifuge 2020, based on MakerDAO dss https://github.com/makerdao/dss
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/* pragma solidity >=0.5.15 <0.6.0; */
/* import "ds-note/note.sol"; */
contract Auth is DSNote {
mapping (address => uint) public wards;
function rely(address usr) public auth note { wards[usr] = 1; }
function deny(address usr) public auth note { wards[usr] = 0; }
modifier auth { require(wards[msg.sender] == 1); _; }
}
////// src/lender/operator.sol
// Copyright (C) 2020 Centrifuge
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
/* pragma solidity >=0.5.15 <0.6.0; */
/* import "ds-note/note.sol"; */
/* import "tinlake-auth/auth.sol"; */
contract TrancheLike_2 {
function supplyOrder(address usr, uint currencyAmount) public;
function redeemOrder(address usr, uint tokenAmount) public;
function disburse(address usr) public returns (uint payoutCurrencyAmount, uint payoutTokenAmount, uint remainingSupplyCurrency, uint remainingRedeemToken);
function disburse(address usr, uint endEpoch) public returns (uint payoutCurrencyAmount, uint payoutTokenAmount, uint remainingSupplyCurrency, uint remainingRedeemToken);
function currency() public view returns (address);
}
interface RestrictedTokenLike {
function hasMember(address) external view returns (bool);
}
interface EIP2612PermitLike {
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}
interface DaiPermitLike {
function permit(address holder, address spender, uint256 nonce, uint256 expiry, bool allowed, uint8 v, bytes32 r, bytes32 s) external;
}
contract Operator is DSNote, Auth {
TrancheLike_2 public tranche;
RestrictedTokenLike public token;
constructor(address tranche_) public {
wards[msg.sender] = 1;
tranche = TrancheLike_2(tranche_);
}
/// sets the dependency to another contract
function depend(bytes32 contractName, address addr) public auth {
if (contractName == "tranche") { tranche = TrancheLike_2(addr); }
else if (contractName == "token") { token = RestrictedTokenLike(addr); }
else revert();
}
/// only investors that are on the memberlist can submit supplyOrders
function supplyOrder(uint amount) public note {
require((token.hasMember(msg.sender) == true), "user-not-allowed-to-hold-token");
tranche.supplyOrder(msg.sender, amount);
}
/// only investors that are on the memberlist can submit redeemOrders
function redeemOrder(uint amount) public note {
require((token.hasMember(msg.sender) == true), "user-not-allowed-to-hold-token");
token.hasMember(msg.sender);
tranche.redeemOrder(msg.sender, amount);
}
/// only investors that are on the memberlist can disburse
function disburse() external
returns(uint payoutCurrencyAmount, uint payoutTokenAmount, uint remainingSupplyCurrency, uint remainingRedeemToken)
{
require((token.hasMember(msg.sender) == true), "user-not-allowed-to-hold-token");
return tranche.disburse(msg.sender);
}
function disburse(uint endEpoch) external
returns(uint payoutCurrencyAmount, uint payoutTokenAmount, uint remainingSupplyCurrency, uint remainingRedeemToken)
{
require((token.hasMember(msg.sender) == true), "user-not-allowed-to-hold-token");
return tranche.disburse(msg.sender, endEpoch);
}
// --- Permit Support ---
function supplyOrderWithDaiPermit(uint amount, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
DaiPermitLike(tranche.currency()).permit(msg.sender, address(tranche), nonce, expiry, true, v, r, s);
supplyOrder(amount);
}
function supplyOrderWithPermit(uint amount, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) public {
EIP2612PermitLike(tranche.currency()).permit(msg.sender, address(tranche), value, deadline, v, r, s);
supplyOrder(amount);
}
function redeemOrderWithPermit(uint amount, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) public {
EIP2612PermitLike(address(token)).permit(msg.sender, address(tranche), value, deadline, v, r, s);
redeemOrder(amount);
}
}
Read Contract
token 0xfc0c546a → address
tranche 0x6ebc0af1 → address
wards 0xbf353dbb → uint256
Write Contract 10 functions
These functions modify contract state and require a wallet transaction to execute.
deny 0x9c52a7f1
address usr
depend 0x9adc339d
bytes32 contractName
address addr
disburse 0xabc6fd0b
No parameters
returns: uint256, uint256, uint256, uint256
disburse 0xbd77ac2c
uint256 endEpoch
returns: uint256, uint256, uint256, uint256
redeemOrder 0x4a58ca0e
uint256 amount
redeemOrderWithPermit 0xff2050ec
uint256 amount
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
rely 0x65fae35e
address usr
supplyOrder 0xf1e4c866
uint256 amount
supplyOrderWithDaiPermit 0x22b2e1b5
uint256 amount
uint256 nonce
uint256 expiry
uint8 v
bytes32 r
bytes32 s
supplyOrderWithPermit 0x54f3e083
uint256 amount
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
Recent Transactions
No transactions found for this address