32 txs
32 calls
constructor
constructor(address _instructor, address _fundsManager, address _backupFundsManager, address _usdt, uint256 _flatDepositAmount, uint256 _courseFinalizedTime)
functions
backupFundsManager
viewfunction backupFundsManager() view returns (address)
courseFinalizedTime
viewfunction courseFinalizedTime() view returns (uint256)
deposits
viewfunction deposits(address) view returns (uint256)
flatDepositAmount
viewfunction flatDepositAmount() view returns (uint256)
fundsManager
viewfunction fundsManager() view returns (address)
hasDeposited
viewfunction hasDeposited(address) view returns (bool)
isTotalSlashedTransferred
viewfunction isTotalSlashedTransferred() view returns (bool)
owner
viewfunction owner() view returns (address)
totalSlashed
viewfunction totalSlashed() view returns (uint256)
usdt
viewfunction usdt() view returns (address)
deposit
nonpayablefunction deposit()
renounceOwnership
nonpayablefunction renounceOwnership()
slashMany
nonpayablefunction slashMany(address[] students, uint256[] amounts)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferSlashedToFundsManager
nonpayablefunction transferSlashedToFundsManager(bool useBackupFundsManager)
withdraw
nonpayablefunction withdraw()
withdrawMany
nonpayablefunction withdrawMany(address[] students)
events
Deposited
event Deposited(address indexed student, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SlashedMany
event SlashedMany(address[] students, uint256[] amounts)
SlashedTransferred
event SlashedTransferred(address indexed fundsManager, uint256 amount)
Withdrawn
event Withdrawn(address indexed student)
WithdrawnMany
event WithdrawnMany(address[] students)
errors
AlreadyDeposited
error AlreadyDeposited()
ArrayLengthMismatch
error ArrayLengthMismatch()
CourseFinalized
error CourseFinalized()
CourseFinalizedTimeInDistantFuture
error CourseFinalizedTimeInDistantFuture()
CourseFinalizedTimeInPast
error CourseFinalizedTimeInPast()
CourseNotFinalized
error CourseNotFinalized()
DuplicateFundsManagerAddress
error DuplicateFundsManagerAddress()
HasNotDeposited
error HasNotDeposited()
InsufficientDeposit
error InsufficientDeposit()
NoRemainingDeposit
error NoRemainingDeposit()
NoSlashedAmountToTransfer
error NoSlashedAmountToTransfer()
NotFundsManagerOrOwner
error NotFundsManagerOrOwner()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlashedAmountAlreadyTransferred
error SlashedAmountAlreadyTransferred()
ZeroBackupFundsManagerAddress
error ZeroBackupFundsManagerAddress()
ZeroFlatDepositAmount
error ZeroFlatDepositAmount()
ZeroFundsManagerAddress
error ZeroFundsManagerAddress()
ZeroUSDTAddress
error ZeroUSDTAddress()
creation bytecode
0x610120604052348015610010575f5ffd5b50604051611f85380380611f858339818101604052810190610032919061050c565b855f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a3575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009a91906105a4565b60405180910390fd5b6100b2816103ba60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610118576040517fada91ced00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361017d576040517f29a0adb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036101e2576040517f682d233f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610247576040517fa2c14f7a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203610280576040517f1432466e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428110156102ba576040517f39163b0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b624f1a00426102c991906105ea565b811115610302576040517f8c6f984900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508160e0818152505080610100818152505050505050505061061d565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104a88261047f565b9050919050565b6104b88161049e565b81146104c2575f5ffd5b50565b5f815190506104d3816104af565b92915050565b5f819050919050565b6104eb816104d9565b81146104f5575f5ffd5b50565b5f81519050610506816104e2565b92915050565b5f5f5f5f5f5f60c087890312156105265761052561047b565b5b5f61053389828a016104c5565b965050602061054489828a016104c5565b955050604061055589828a016104c5565b945050606061056689828a016104c5565b935050608061057789828a016104f8565b92505060a061058889828a016104f8565b9150509295509295509295565b61059e8161049e565b82525050565b5f6020820190506105b75f830184610595565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105f4826104d9565b91506105ff836104d9565b9250828201905080821115610617576106166105bd565b5b92915050565b60805160a05160c05160e051610100516118c96106bc5f395f81816103350152818161041b015281816105d9015281816107f801528181610941015261096501525f8181610a3f01528181610b2e01528181610b690152610bd301525f81816103110152818161077e01528181610b8a0152610dee01525f81816103ef015261070701525f81816102ed0152818161051301526106e101526118c95ff3fe608060405234801561000f575f5ffd5b5060043610610109575f3560e01c80638da5cb5b116100a0578063d0e30db01161006f578063d0e30db014610247578063d33c0f3c14610251578063f2c16e6f1461026f578063f2fde38b1461029f578063fc7e286d146102bb57610109565b80638da5cb5b146101d157806390ed06fa146101ef578063a201bbdd1461020b578063a5ccef0f1461022957610109565b80635445e100116100dc5780635445e10014610171578063658e48211461018f578063715018a6146101ab578063891a736f146101b557610109565b80630d1166521461010d5780632f48ab7d1461012b5780633ccfd60b146101495780634d68f17a14610153575b5f5ffd5b6101156102eb565b60405161012291906112c6565b60405180910390f35b61013361030f565b604051610140919061133a565b60405180910390f35b610151610333565b005b61015b6103db565b604051610168919061136d565b60405180910390f35b6101796103ed565b60405161018691906112c6565b60405180910390f35b6101a960048036038101906101a491906113ef565b610411565b005b6101b36104fe565b005b6101cf60048036038101906101ca9190611464565b610511565b005b6101d96107c7565b6040516101e691906112c6565b60405180910390f35b610209600480360381019061020491906114e4565b6107ee565b005b610213610939565b604051610220919061157a565b60405180910390f35b61023161093f565b60405161023e919061157a565b60405180910390f35b61024f610963565b005b610259610bd1565b604051610266919061157a565b60405180910390f35b610289600480360381019061028491906115bd565b610bf5565b604051610296919061136d565b60405180910390f35b6102b960048036038101906102b491906115bd565b610c12565b005b6102d560048036038101906102d091906115bd565b610c96565b6040516102e2919061157a565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000042101561038d576040517f46ff713300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167ff45a04d08a70caa7eb4b747571305559ad9fdf4a093afd41506b35c8a306fa9460405160405180910390a26103d933610cab565b565b60025f9054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b610419610e36565b7f0000000000000000000000000000000000000000000000000000000000000000421015610473576040517f46ff713300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f32e0a3fdbefaa4b1d28d05004f5307f5c2162adea4179067c5fdfc9007d5d3a682826040516104a49291906116a4565b60405180910390a15f5f90505b828290508110156104f9576104ec8383838181106104d2576104d16116c6565b5b90506020020160208101906104e791906115bd565b610cab565b80806001019150506104b1565b505050565b610506610e36565b61050f5f610ebd565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105a057506105706107c7565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156105d7576040517f3adddbec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000421015610631576040517f46ff713300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900460ff1615610677576040517ff865601100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600154036106b2576040517f3809952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160025f6101000a81548160ff0219169083151502179055505f60015490505f6001819055505f82610705577f0000000000000000000000000000000000000000000000000000000000000000610727565b7f00000000000000000000000000000000000000000000000000000000000000005b90508073ffffffffffffffffffffffffffffffffffffffff167f5271ae980bc4ddfd27f9304ad17b86f7086195daa98431af7bc4408f1fce829d8360405161076f919061157a565b60405180910390a26107c281837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7e9092919063ffffffff16565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107f6610e36565b7f0000000000000000000000000000000000000000000000000000000000000000421061084f576040517f0b4bb9b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81819050848490501461088e576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f37ccfcbaa7ee68d455924481579cc85e174800422d93060d7ad1e11687ba739f848484846040516108c3949392919061176b565b60405180910390a15f5f90505b84849050811015610932576109258585838181106108f1576108f06116c6565b5b905060200201602081019061090691906115bd565b848484818110610919576109186116c6565b5b90506020020135610ffd565b80806001019150506108d0565b5050505050565b60015481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000042106109bc576040517f0b4bb9b400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610a3d576040517fd5a8211500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff167f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c47f0000000000000000000000000000000000000000000000000000000000000000604051610b5a919061157a565b60405180910390a2610bcf33307f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611163909392919063ffffffff16565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6004602052805f5260405f205f915054906101000a900460ff1681565b610c1a610e36565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8a575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610c8191906112c6565b60405180910390fd5b610c9381610ebd565b50565b6003602052805f5260405f205f915090505481565b60045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610d2b576040517f8fa6f09700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8103610da5576040517fb64e4b1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e3282827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f7e9092919063ffffffff16565b5050565b610e3e6111e5565b73ffffffffffffffffffffffffffffffffffffffff16610e5c6107c7565b73ffffffffffffffffffffffffffffffffffffffff1614610ebb57610e7f6111e5565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610eb291906112c6565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610ff8838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401610fb19291906117a4565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111ec565b505050565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661107d576040517f8fa6f09700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110f4576040517f0e1eddda00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461114091906117f8565b925050819055508060015f828254611158919061182b565b925050819055505050565b6111df848573ffffffffffffffffffffffffffffffffffffffff166323b872dd8686866040516024016111989392919061185e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506111ec565b50505050565b5f33905090565b5f5f60205f8451602086015f885af18061120b576040513d5f823e3d81fd5b3d92505f519150505f821461122457600181141561123f565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561128157836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161127891906112c6565b60405180910390fd5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6112b082611287565b9050919050565b6112c0816112a6565b82525050565b5f6020820190506112d95f8301846112b7565b92915050565b5f819050919050565b5f6113026112fd6112f884611287565b6112df565b611287565b9050919050565b5f611313826112e8565b9050919050565b5f61132482611309565b9050919050565b6113348161131a565b82525050565b5f60208201905061134d5f83018461132b565b92915050565b5f8115159050919050565b61136781611353565b82525050565b5f6020820190506113805f83018461135e565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126113af576113ae61138e565b5b8235905067ffffffffffffffff8111156113cc576113cb611392565b5b6020830191508360208202830111156113e8576113e7611396565b5b9250929050565b5f5f6020838503121561140557611404611386565b5b5f83013567ffffffffffffffff8111156114225761142161138a565b5b61142e8582860161139a565b92509250509250929050565b61144381611353565b811461144d575f5ffd5b50565b5f8135905061145e8161143a565b92915050565b5f6020828403121561147957611478611386565b5b5f61148684828501611450565b91505092915050565b5f5f83601f8401126114a4576114a361138e565b5b8235905067ffffffffffffffff8111156114c1576114c0611392565b5b6020830191508360208202830111156114dd576114dc611396565b5b9250929050565b5f5f5f5f604085870312156114fc576114fb611386565b5b5f85013567ffffffffffffffff8111156115195761151861138a565b5b6115258782880161139a565b9450945050602085013567ffffffffffffffff8111156115485761154761138a565b5b6115548782880161148f565b925092505092959194509250565b5f819050919050565b61157481611562565b82525050565b5f60208201905061158d5f83018461156b565b92915050565b61159c816112a6565b81146115a6575f5ffd5b50565b5f813590506115b781611593565b92915050565b5f602082840312156115d2576115d1611386565b5b5f6115df848285016115a9565b91505092915050565b5f82825260208201905092915050565b5f819050919050565b61160a816112a6565b82525050565b5f61161b8383611601565b60208301905092915050565b5f61163560208401846115a9565b905092915050565b5f602082019050919050565b5f61165483856115e8565b935061165f826115f8565b805f5b85811015611697576116748284611627565b61167e8882611610565b97506116898361163d565b925050600181019050611662565b5085925050509392505050565b5f6020820190508181035f8301526116bd818486611649565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b5f5ffd5b82818337505050565b5f61171b83856116f3565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561174e5761174d611703565b5b60208302925061175f838584611707565b82840190509392505050565b5f6040820190508181035f830152611784818688611649565b90508181036020830152611799818486611710565b905095945050505050565b5f6040820190506117b75f8301856112b7565b6117c4602083018461156b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61180282611562565b915061180d83611562565b9250828203905081811115611825576118246117cb565b5b92915050565b5f61183582611562565b915061184083611562565b9250828201905080821115611858576118576117cb565b5b92915050565b5f6060820190506118715f8301866112b7565b61187e60208301856112b7565b61188b604083018461156b565b94935050505056fea2646970667358221220ae339db9168a7c4a351bf56b02959e09d2272a2ce45bbe915cbf7713cb9e3ee364736f6c634300081e00330000000000000000000000008fe7a21fe057f9c31812e5049128a41fea79d0660000000000000000000000002a063d9c09a5c5fadb53d67f298d650f371badb50000000000000000000000008fe7a21fe057f9c31812e5049128a41fea79d066000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000000459e4400000000000000000000000000000000000000000000000000000000068e12860