USA Node
Top Transactions
Blocks
Staking
Tokens
Broadcast TXN
CLI Interface
Developer API
Smart Contract HQ
Contact Us
Donate
Node Status
Node:
Main Net - US
Search
Token Contract Details
Contract:
0xf50b789eea224e5e783918b53986d4e319eeea6b
Name:
Ageio Wrapped Theta
Symbol:
AWT
Total Supply:
60.00
Decimal:
18
Compiler Version:
v0.8.15
Published Contract:
Send Transactions
TNT-20 Transactions
TNT-721 Transactions
Contract
Contract ByteCode:
0x6080604052600436106103025760003560e01c806378bfd8ae11610190578063ab91c7b0116100dc578063d93efe9411610095578063eadf62581161006f578063eadf625814610a06578063ed9e4fd214610a0e578063f2fde38b14610a2e578063fec0fb6014610a4e57600080fd5b8063d93efe9414610962578063dd62ed3e146109a0578063e3f4ce55146109e657600080fd5b8063ab91c7b01461089a578063b0b73edc146108b0578063b88a802f146108dd578063be82f414146108f2578063cd21b3d914610912578063d46b6a301461093257600080fd5b80639156cd231161014957806395d89b411161012357806395d89b4114610825578063a3895fff1461083a578063a457c2d71461085a578063a9059cbb1461087a57600080fd5b80639156cd23146107cb57806392eefe9b146107eb5780639406d1061461080b57600080fd5b806378bfd8ae146106de5780637974794e146106fe5780638a48a5151461071e5780638c31d54d146107335780638c65c81f1461076b5780638da5cb5b146107ad57600080fd5b80633a0d7ddc1161024f5780635353a2d81161020857806367fe3362116101e257806367fe33621461066957806370a0823114610689578063715018a6146106a957806378b0bde0146106be57600080fd5b80635353a2d8146105f3578063648036ae14610613578063648991fd1461062957600080fd5b80633a0d7ddc1461051657806340c10f191461054e57806342966c681461056e57806349a852e51461058e5780634cae6d62146105be5780634f285d8e146105de57600080fd5b806323b872dd116102bc57806330e0789e1161029657806330e0789e1461045b578063313ce5671461047b57806332e9b9231461049757806339509351146104f657600080fd5b806323b872dd146103fb5780632784385f1461041b5780632b04e8401461043b57600080fd5b80628cc2621461030e57806306fdde0314610348578063095ea7b31461036a578063104e81ff1461039a5780631532335e146103bc57806318160ddd146103dc57600080fd5b3661030957005b600080fd5b34801561031a57600080fd5b5061032e610329366004612b5c565b610a86565b604080519283526020830191909152015b60405180910390f35b34801561035457600080fd5b5061035d610ce9565b60405161033f9190612b79565b34801561037657600080fd5b5061038a610385366004612bce565b610d7b565b604051901515815260200161033f565b3480156103a657600080fd5b506103ba6103b5366004612bfa565b610d93565b005b3480156103c857600080fd5b506103ba6103d7366004612bfa565b610ebc565b3480156103e857600080fd5b50600f545b60405190815260200161033f565b34801561040757600080fd5b5061038a610416366004612bfa565b610f4e565b34801561042757600080fd5b506103ba610436366004612b5c565b610f72565b34801561044757600080fd5b5061032e610456366004612bce565b611143565b34801561046757600080fd5b506103ba610476366004612bfa565b6111e2565b34801561048757600080fd5b506040516012815260200161033f565b3480156104a357600080fd5b506104d76104b2366004612c3b565b601060205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161033f565b34801561050257600080fd5b5061038a610511366004612bce565b6113a6565b34801561052257600080fd5b50610536610531366004612c3b565b6113e0565b6040516001600160a01b03909116815260200161033f565b34801561055a57600080fd5b506103ba610569366004612bce565b61140a565b34801561057a57600080fd5b506103ba610589366004612c3b565b611542565b34801561059a57600080fd5b5061038a6105a9366004612b5c565b60036020526000908152604090205460ff1681565b3480156105ca57600080fd5b5061032e6105d9366004612bfa565b6116af565b3480156105ea57600080fd5b506103ba611771565b3480156105ff57600080fd5b506103ba61060e366004612c6a565b6117a7565b34801561061f57600080fd5b506103ed60045481565b34801561063557600080fd5b50610649610644366004612d1b565b6117dd565b60408051948552602085019390935291830152606082015260800161033f565b34801561067557600080fd5b506103ba610684366004612d59565b611994565b34801561069557600080fd5b506103ed6106a4366004612b5c565b6119e9565b3480156106b557600080fd5b506103ba611a04565b3480156106ca57600080fd5b506105366106d9366004612c3b565b611a38565b3480156106ea57600080fd5b506103ba6106f9366004612b5c565b611a48565b34801561070a57600080fd5b506103ed610719366004612b5c565b611b38565b34801561072a57600080fd5b506002546103ed565b34801561073f57600080fd5b506103ed61074e366004612bce565b600a60209081526000928352604080842090915290825290205481565b34801561077757600080fd5b50610649610786366004612c3b565b60056020526000908152604090208054600182015460028301546003909301549192909184565b3480156107b957600080fd5b506000546001600160a01b0316610536565b3480156107d757600080fd5b506103ba6107e6366004612d59565b611b89565b3480156107f757600080fd5b506103ba610806366004612b5c565b611c6f565b34801561081757600080fd5b50600c5461038a9060ff1681565b34801561083157600080fd5b5061035d611cbb565b34801561084657600080fd5b506103ba610855366004612c6a565b611cca565b34801561086657600080fd5b5061038a610875366004612bce565b611d00565b34801561088657600080fd5b5061038a610895366004612bce565b611d92565b3480156108a657600080fd5b506103ed60115481565b3480156108bc57600080fd5b506103ed6108cb366004612b5c565b60076020526000908152604090205481565b3480156108e957600080fd5b506103ba611da0565b3480156108fe57600080fd5b5061038a61090d366004612b5c565b611e08565b34801561091e57600080fd5b50600154610536906001600160a01b031681565b34801561093e57600080fd5b5061038a61094d366004612b5c565b60086020526000908152604090205460ff1681565b34801561096e57600080fd5b506103ed61097d366004612bfa565b600b60209081526000938452604080852082529284528284209052825290205481565b3480156109ac57600080fd5b506103ed6109bb366004612d87565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156109f257600080fd5b506103ba610a01366004612c3b565b611e6c565b6103ba612108565b348015610a1a57600080fd5b506103ba610a29366004612db5565b6123b3565b348015610a3a57600080fd5b506103ba610a49366004612b5c565b6123f0565b348015610a5a57600080fd5b506103ed610a69366004612bce565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b038216600090815260076020526040812054909182911480610ad757506001600454610abc9190612de8565b6001600160a01b038416600090815260076020526040902054145b15610ae757506000928392509050565b6000610af2846119e9565b1115610ce4576001600160a01b038316600090815260076020526040812054610b1c576000610b40565b6001600160a01b038416600090815260076020526040902054610b40906001612dff565b9050805b600454811015610bda576001600160a01b038516600090815260066020908152604080832084845290915281205490819003610b8b576000610b868784611143565b509150505b600082815260056020526040902060020154610bc490610bbd9064e8d4a5100090610bb7908590612488565b9061249b565b86906124a7565b9450508080610bd290612e17565b915050610b44565b5060005b600954811015610ce157815b600454811015610cce576000600b600060098581548110610c0d57610c0d612e30565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938b1682529283528181208582529092528120549150819003610c8c576000610c8760098581548110610c6b57610c6b612e30565b6000918252602090912001546001600160a01b031689856116af565b509150505b600082815260056020526040902060020154610cb890610bbd9064e8d4a5100090610bb7908590612488565b9450508080610cc690612e17565b915050610bea565b5080610cd981612e17565b915050610bde565b50505b915091565b606060128054610cf890612e46565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2490612e46565b8015610d715780601f10610d4657610100808354040283529160200191610d71565b820191906000526020600020905b815481529060010190602001808311610d5457829003601f168201915b5050505050905090565b600033610d89818585610d93565b5060019392505050565b6001600160a01b038316610dfa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216610e5b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df1565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600e60209081526040808320938616835292905220546000198114610f485781811015610f3b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610df1565b610f488484848403610d93565b50505050565b600033610f5c858285610ebc565b610f678585856111e2565b506001949350505050565b6000546001600160a01b03163314610f9c5760405162461bcd60e51b8152600401610df190612e80565b6001600160a01b03811615801590610fb45750803b15155b8015610fc65750610fc481611e08565b155b6110125760405162461bcd60e51b815260206004820152601a60248201527f4157543a206661726d20646f6573206e6f74206578697374732e0000000000006044820152606401610df1565b6000805b600254811015611068576002818154811061103357611033612e30565b6000918252602090912001546001600160a01b0390811690841603611056578091505b8061106081612e17565b915050611016565b50805b60025461107a90600190612de8565b81101561110557600261108e826001612dff565b8154811061109e5761109e612e30565b600091825260209091200154600280546001600160a01b0390921691839081106110ca576110ca612e30565b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055806110fd81612e17565b91505061106b565b506002805461111690600190612de8565b8154811061112657611126612e30565b600091825260209091200180546001600160a01b03191690555050565b6001600160a01b0382166000908152600660209081526040808320848452909152812054819081036111b8575b6000831180156111a157506001600160a01b0384166000908152600660209081526040808320868452909152902054155b156111b857826111b081612eb5565b935050611170565b50506001600160a01b03909116600090815260066020908152604080832084845290915290205491565b6001600160a01b0383166112465760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610df1565b6001600160a01b0382166112a85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610df1565b6001600160a01b0383166000908152600d6020526040902054818110156113205760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df1565b6001600160a01b038085166000908152600d6020526040808220858503905591851681522054611351908390612dff565b6001600160a01b038085166000818152600d602052604090819020939093559151908616906000805160206130fd833981519152906113939086815260200190565b60405180910390a3610f488484846124b3565b336000818152600e602090815260408083206001600160a01b0387168452909152812054909190610d8990829086906103b5908790612dff565b600281815481106113f057600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526003602052604090205460ff166114695760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610df1565b6001600160a01b0382166114bf5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610df1565b80600f60008282546114d19190612dff565b90915550506001600160a01b0382166000908152600d6020526040812080548392906114fe908490612dff565b90915550506040518181526001600160a01b038316906000906000805160206130fd8339815191529060200160405180910390a361153e600083836124b3565b5050565b600c5460ff16156115885760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610df1565b336115a55760405162461bcd60e51b8152600401610df190612ecc565b6115ad335b50565b6115b9335b6001612748565b336000908152600d6020526040902054818110156115e95760405162461bcd60e51b8152600401610df190612f0d565b336000908152600d6020526040808220848403905530825290205461160e90836124a7565b306000908152600d602052604081209190915561162a33611b38565b600081815260106020526040902080546001600160a01b0319163317815560018101549192509061165b90856124a7565b6001820155601154820361167f576011805490600061167983612e17565b91905055505b604051848152309033906000805160206130fd8339815191529060200160405180910390a3610f483330866124b3565b6001600160a01b038084166000908152600b6020908152604080832093861683529281528282208483529052908120548190810361173a575b60008311801561172357506001600160a01b038086166000908152600b60209081526040808320938816835292815282822086835290522054155b1561173a578261173281612eb5565b9350506116e8565b50506001600160a01b039283166000908152600b602090815260408083209490951682529283528381208282529092529190205491565b6000546001600160a01b0316331461179b5760405162461bcd60e51b8152600401610df190612e80565b6117a53347612a36565b565b6000546001600160a01b031633146117d15760405162461bcd60e51b8152600401610df190612e80565b601261153e8282612f9d565b6000806000806117ec856119e9565b93506000925060009150600090506004548611156118155750600092508291508190508061198b565b831561198b576001600160a01b0385166000908152600660209081526040808320898452909152812054908190036118585760006118538789611143565b509150505b60008781526005602052604090206002015461188b906118849064e8d4a5100090610bb7908590612488565b84906124a7565b925060005b600954811015611988576000600b6000600984815481106118b3576118b3612e30565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938c1682529283528181208c8252909252812054915081900361193257600061192d6009848154811061191157611911612e30565b6000918252602090912001546001600160a01b03168a8c6116af565b509150505b61193c86826124a7565b60008a8152600560205260409020600201549096506119729061196b9064e8d4a5100090610bb7908590612488565b85906124a7565b935050808061198090612e17565b915050611890565b50505b92959194509250565b6000546001600160a01b031633146119be5760405162461bcd60e51b8152600401610df190612e80565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b03163314611a2e5760405162461bcd60e51b8152600401610df190612e80565b6117a56000612aeb565b600981815481106113f057600080fd5b6000546001600160a01b03163314611a725760405162461bcd60e51b8152600401610df190612e80565b6001600160a01b03811615801590611a8a5750803b15155b8015611a9a5750611a9a81611e08565b611ae65760405162461bcd60e51b815260206004820152601c60248201527f4157543a206661726d20697320616c7265616479206578697374732e000000006044820152606401610df1565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b601154811015611b7f576000818152601060205260409020546001600160a01b03808516911603611b6d5792915050565b80611b7781612e17565b915050611b3c565b5050601154919050565b6000546001600160a01b03163314611bb35760405162461bcd60e51b8152600401610df190612e80565b6001600160a01b03821660009081526008602052604090205460ff16611c375760098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff19168215151790555b6040516001600160a01b038316907fefa66f79f2acb895724ce328f8b91e1832718605c2899b1df014221d41920b3990600090a25050565b6000546001600160a01b03163314611c995760405162461bcd60e51b8152600401610df190612e80565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060138054610cf890612e46565b6000546001600160a01b03163314611cf45760405162461bcd60e51b8152600401610df190612e80565b601361153e8282612f9d565b336000818152600e602090815260408083206001600160a01b038716845290915281205490919083811015611d855760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df1565b610f678286868403610d93565b600033610d898185856111e2565b6001600454611daf9190612de8565b3360009081526007602052604090205410611dff5760405162461bcd60e51b815260206004820152601060248201526f115c9c9bdc8e88139bc814995dd85c9960821b6044820152606401610df1565b6117a5336115b2565b6000805b600254811015611e635760028181548110611e2957611e29612e30565b6000918252602090912001546001600160a01b0390811690841603611e515750600092915050565b80611e5b81612e17565b915050611e0c565b50600192915050565b600c5460ff1615611eb25760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610df1565b33611ecf5760405162461bcd60e51b8152600401610df190612ecc565b6000611eda33611b38565b6000818152601060205260409020600181015491925090831115611f405760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e742062616c616e636500000000006044820152606401610df1565b306000908152600d602052604090205483811015611f705760405162461bcd60e51b8152600401610df190612f0d565b306000908152600d60205260408082208684039055338252902054611f9590856124a7565b336000908152600d60205260409020556001820154611fb49085612b3b565b600183018190556000036120d8576001601154611fd19190612de8565b83101561208b57825b6001601154611fe99190612de8565b8110156120895760106000611fff836001612dff565b8152602080820192909252604090810160009081205484825260109384905291812080546001600160a01b0319166001600160a01b039093169290921790915561204a836001612dff565b8152602001908152602001600020600101546010600083815260200190815260200160002060010181905550808061208190612e17565b915050611fda565b505b60106000600160115461209e9190612de8565b81526020810191909152604001600090812080546001600160a01b031916815560010181905560118054916120d283612eb5565b91905055505b604051848152339030906000805160206130fd8339815191529060200160405180910390a3610f483033866124b3565b3360009081526003602052604090205460ff166121675760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610df1565b34156117a557600f54156117a5576004546000908152600560205260409020600f5481553460018201556121ac61219d600f5490565b610bb73464e8d4a51000612488565b6002820155426003820155600480549060006121c783612e17565b919050555060005b60115481101561220b57600081815260106020526040812080546001600160a01b0319168155600101558061220381612e17565b9150506121cf565b5060006011819055600c805460ff19169055308152600d602052604090205480156122885761223b306000612748565b80600f600082825461224d9190612de8565b9091555050306000818152600d60209081526040808320839055518481529192916000805160206130fd833981519152910160405180910390a35b60005b6002548110156123ae576000600282815481106122aa576122aa612e30565b60009182526020822001546001600160a01b031691506122c9826119e9565b111561239b576000806122db83610a86565b909250905060006122ec83836124a7565b905080156123975760008147116123035747612305565b815b9050846001600160a01b0316639789cebd826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561234257600080fd5b505af1158015612356573d6000803e3d6000fd5b50505050506004546000146123795760016004546123749190612de8565b61237c565b60005b6001600160a01b038616600090815260076020526040902055505b5050505b50806123a681612e17565b91505061228b565b505050565b6000546001600160a01b031633146123dd5760405162461bcd60e51b8152600401610df190612e80565b600c805460ff1916911515919091179055565b6000546001600160a01b0316331461241a5760405162461bcd60e51b8152600401610df190612e80565b6001600160a01b03811661247f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df1565b6115aa81612aeb565b6000612494828461305d565b9392505050565b6000612494828461307c565b60006124948284612dff565b6001600160a01b0383161561263a576124cb836119e9565b6001600160a01b038416600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff161561263a576001600160a01b0383166000908152600a60209081526040808320600454845290915290205481116125ed576001600160a01b0383166000908152600a6020908152604080832060045484529091529020546125629082612b3b565b6001600160a01b038085166000818152600a6020908152604080832060048054855290835281842096909655928252600b8152828220938716825292835281812093548152929091529020546125b89082612b3b565b6001600160a01b038085166000908152600b60209081526040808320938716835292815282822060045483529052205561263a565b6001600160a01b038084166000818152600a60209081526040808320600480548552908352818420849055938352600b825280832094871683529381528382209254825291909152908120555b6001600160a01b038216156123ae57612652826119e9565b6001600160a01b038316600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff16156123ae576001600160a01b0382166000908152600a6020908152604080832060045484529091529020546126bd90826124a7565b6001600160a01b038084166000818152600a6020908152604080832060048054855290835281842096909655928252600b81528282209388168252928352818120935481529290915290205461271390826124a7565b6001600160a01b038084166000908152600b602090815260408083209388168352928152828220600454835290522055505050565b6000612753836119e9565b116127a05760405162461bcd60e51b815260206004820152601960248201527f4157543a20696e73756666696369656e742062616c616e6365000000000000006044820152606401610df1565b6000806127ac84610a86565b909250905060006127bd83836124a7565b90508015612a2f576000814711156127d65750806127d9565b50475b84156129da5760015460408051631bec7ac360e21b8152815160009384936001600160a01b0390911692636fb1eb0c92600480830193928290030181865afa158015612829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284d919061309e565b90925090506000612864612710610bb78686612488565b90506000612878612710610bb78786612488565b9050600061289061288984846124a7565b8790612b3b565b9050612912600160009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290c91906130c2565b84612a36565b60015460405163addb4f9f60e01b8152600481018490526001600160a01b039091169063addb4f9f90849060240160206040518083038185885af115801561295e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061298391906130df565b5061298e8b82612a36565b604080516001600160a01b038d168152602081018390527f3d95701a8a1f372b6f6f5ecc5917bf2ba13f339495cce49691ca0a101fb9d424910160405180910390a150505050506129f5565b6129f56129ef6000546001600160a01b031690565b82612a36565b60045415612a11576001600454612a0c9190612de8565b612a14565b60005b6001600160a01b038716600090815260076020526040902055505b5050505050565b6000826001600160a01b03166159d883604051600060405180830381858888f193505050503d8060008114612a87576040519150601f19603f3d011682016040523d82523d6000602084013e612a8c565b606091505b50509050806123ae5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a20544655454c5f5452414e534645525f46604482015264105253115160da1b6064820152608401610df1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006124948284612de8565b6001600160a01b03811681146115aa57600080fd5b600060208284031215612b6e57600080fd5b813561249481612b47565b600060208083528351808285015260005b81811015612ba657858101830151858201604001528201612b8a565b81811115612bb8576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612be157600080fd5b8235612bec81612b47565b946020939093013593505050565b600080600060608486031215612c0f57600080fd5b8335612c1a81612b47565b92506020840135612c2a81612b47565b929592945050506040919091013590565b600060208284031215612c4d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612c7c57600080fd5b813567ffffffffffffffff80821115612c9457600080fd5b818401915084601f830112612ca857600080fd5b813581811115612cba57612cba612c54565b604051601f8201601f19908116603f01168101908382118183101715612ce257612ce2612c54565b81604052828152876020848701011115612cfb57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215612d2e57600080fd5b823591506020830135612d4081612b47565b809150509250929050565b80151581146115aa57600080fd5b60008060408385031215612d6c57600080fd5b8235612d7781612b47565b91506020830135612d4081612d4b565b60008060408385031215612d9a57600080fd5b8235612da581612b47565b91506020830135612d4081612b47565b600060208284031215612dc757600080fd5b813561249481612d4b565b634e487b7160e01b600052601160045260246000fd5b600082821015612dfa57612dfa612dd2565b500390565b60008219821115612e1257612e12612dd2565b500190565b600060018201612e2957612e29612dd2565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612e5a57607f821691505b602082108103612e7a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600081612ec457612ec4612dd2565b506000190190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b601f8211156123ae57600081815260208120601f850160051c81016020861015612f765750805b601f850160051c820191505b81811015612f9557828155600101612f82565b505050505050565b815167ffffffffffffffff811115612fb757612fb7612c54565b612fcb81612fc58454612e46565b84612f4f565b602080601f8311600181146130005760008415612fe85750858301515b600019600386901b1c1916600185901b178555612f95565b600085815260208120601f198616915b8281101561302f57888601518255948401946001909101908401613010565b508582101561304d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600081600019048311821515161561307757613077612dd2565b500290565b60008261309957634e487b7160e01b600052601260045260246000fd5b500490565b600080604083850312156130b157600080fd5b505080516020909101519092909150565b6000602082840312156130d457600080fd5b815161249481612b47565b6000602082840312156130f157600080fd5b815161249481612d4b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201035d79e17082997745c9d188d130be9798a9bdcd424417c92da72f7bcb985a464736f6c634300080f0033
Published Contract:
// SPDX-License-Identifier: MIT pragma solidity >0.8.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } interface IAgeioController { function treasury() external view returns (address); function commissionFee() external view returns(uint256 treasuryFee, uint256 burnFee); function claimAgtReward(uint256 _amount) external; function swapAgtWithTfuel(uint256 amount) external payable returns (bool); function getAgtAmountFromTfuel(uint256 tfuelAmount) external view returns(uint256); } interface IFarm { function disperseReward() external payable; } contract AWThetaToken is Ownable, IERC20, IERC20Metadata { using SafeMath for uint256; address public ageioController; address[] public agtFarms; mapping(address=>bool) public boards; struct RewardRound { uint256 thetaSupply; uint256 tfuelReward; uint256 tfuelShare; uint256 timestamp; } uint256 public roundIndex; mapping(uint256=>RewardRound) public rounds; mapping(address=>mapping(uint256=>uint256)) public balancesByRound; mapping(address=>uint256) public lastClaimedRoundIndex; mapping(address=>bool) public isAMM; address[] public listAMM; // pair => roundIndex => lp amount mapping(address=>mapping(uint256=>uint256)) public totalLpInAMM; // pair => address => roundIndex => lp amount mapping(address=>mapping(address=>mapping(uint256=>uint256))) public userLpInAMM; bool public isProcessingWithGn; mapping(address=>uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; struct BurnTransaction { address account; uint256 amount; } mapping(uint256=>BurnTransaction) public queueBurnTransactions; uint256 public queueLength; string private _name = "Ageio Wrapped Theta"; string private _symbol = "AWT"; // Definition of event event DepositedReward(uint256 amount); event ClaimedTfuelReward(address account, uint256 amount); event Issue(address account, uint256 amount); event Redeem(address account, uint256 amount); event AddedNewAMM(address indexed amm); constructor() { roundIndex = 0; RewardRound storage round = rounds[roundIndex]; round.thetaSupply = 0; round.tfuelReward = 0; round.tfuelShare = 0; round.timestamp = block.timestamp; isProcessingWithGn = false; boards[_msgSender()] = true; } /* *** Settings function */ /** * @notice Checks if address is a contract * @dev It prevents contract from being targetted */ function _isContract(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function addBoard(address _board, bool _isBoard) public onlyOwner { boards[_board] = _isBoard; } modifier onlyBoard() { require(boards[_msgSender()], "Error: Caller is not board."); _; } event AddedAgtFarm(address _farm); function addAgtFarm(address _farm) public onlyOwner { require(_farm != address(0) && _isContract(_farm) && isNewFarm(_farm), "AWT: farm is already exists."); agtFarms.push(_farm); } function removeAgtFarm(address _farm) public onlyOwner { require(_farm != address(0) && _isContract(_farm) && !isNewFarm(_farm), "AWT: farm does not exists."); uint256 idx = 0; for(uint256 i=0;i
= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer(address from, address to, uint256 amount) public { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; } _balances[to] = _balances[to] + amount; emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function mint(address account, uint256 amount) public onlyBoard { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function queueIndex(address account) public view returns(uint256) { for(uint256 i=0;i
= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[_msgSender()] = accountBalance - amount; } _balances[address(this)] = _balances[address(this)].add(amount); uint256 accountQueueIndex = queueIndex(_msgSender()); BurnTransaction storage queue = queueBurnTransactions[accountQueueIndex]; queue.account = _msgSender(); queue.amount = queue.amount.add(amount); if (accountQueueIndex == queueLength) queueLength++; emit Transfer(_msgSender(), address(this), amount); _afterTokenTransfer(_msgSender(), address(this), amount); } function cancelBurn(uint256 amount) public { require(!isProcessingWithGn, "AWT: Not allowed"); require(_msgSender() != address(0), "ERC20: burn from the zero address"); uint256 accountQueueIndex = queueIndex(_msgSender()); BurnTransaction storage queue = queueBurnTransactions[accountQueueIndex]; require(queue.amount >= amount, "Error: Insufficient balance"); _beforeTokenTransfer(address(this), _msgSender(), amount); uint256 contractbalance = _balances[address(this)]; require(contractbalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[address(this)] = contractbalance - amount; } _balances[_msgSender()] = _balances[_msgSender()].add(amount); queue.amount = queue.amount.sub(amount); if (queue.amount == 0) { if (accountQueueIndex < queueLength - 1) { for(uint i=accountQueueIndex;i
= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer(address from, address to, uint256 amount) internal { // TODO - restrict the processing of AWTheta token with swap protocol // if (to != address(0) && amount > 0 && balanceOf(to) == 0) { // lastClaimedRoundIndex[to] = roundIndex == 0 ? 0 : (roundIndex - 1); // } } function _afterTokenTransfer(address from, address to, uint256 amount) internal { if (from != address(0)) { balancesByRound[from][roundIndex] = balanceOf(from); if (isAMM[from]) { if (totalLpInAMM[from][roundIndex] >= amount) { totalLpInAMM[from][roundIndex] = totalLpInAMM[from][roundIndex].sub(amount); userLpInAMM[from][to][roundIndex] = userLpInAMM[from][to][roundIndex].sub(amount); } else { totalLpInAMM[from][roundIndex] = 0; userLpInAMM[from][to][roundIndex] = 0; } } } if (to != address(0)) { balancesByRound[to][roundIndex] = balanceOf(to); if (isAMM[to]) { totalLpInAMM[to][roundIndex] = totalLpInAMM[to][roundIndex].add(amount); userLpInAMM[to][from][roundIndex] = userLpInAMM[to][from][roundIndex].add(amount); } } } function updateRound() public payable onlyBoard { if (msg.value == 0) return; if (totalSupply() == 0) return; RewardRound storage rewardRound = rounds[roundIndex]; rewardRound.thetaSupply = totalSupply(); rewardRound.tfuelReward = msg.value; rewardRound.tfuelShare = msg.value.mul(1e12).div(totalSupply()); rewardRound.timestamp = block.timestamp; roundIndex++; for(uint i=0;i
0) { _claimReward(address(this), false); _totalSupply -= amount; _balances[address(this)] = 0; emit Transfer(address(this), address(0), amount); } for(uint256 i=0;i
0) { (uint256 rewardEarned, uint256 rewardEarnedInAMM) = earned(account); uint256 rewardBal = rewardEarned.add(rewardEarnedInAMM); if (rewardBal > 0) { uint256 _amount = (address(this).balance > rewardBal) ? rewardBal : address(this).balance; IFarm(address(account)).disperseReward{value: _amount}(); lastClaimedRoundIndex[account] = roundIndex == 0 ? 0 : (roundIndex - 1); } } } } function balanceByRound(uint256 rId, address account) public view returns(uint256 balance, uint256 balanceInAMM, uint256 rewardEarned, uint256 rewardEarnedInAMM) { balance = balanceOf(account); balanceInAMM = 0; rewardEarned = 0; rewardEarnedInAMM = 0; if (rId > roundIndex) return (0, 0, 0, 0); if (balance > 0) { uint256 accountBal = balancesByRound[account][rId]; if ( accountBal == 0 ) { (uint256 lastBalance, ) = getBalance(account, rId); accountBal = lastBalance; } rewardEarned = rewardEarned.add(accountBal.mul(rounds[rId].tfuelShare).div(1e12)); for(uint256 i=0;i
0 && balancesByRound[account][currentRoundIdx] == 0) { currentRoundIdx--; } } lastBalance = balancesByRound[account][currentRoundIdx]; lastRoundIndex = currentRoundIdx; } function getLpBalance(address lpAddress, address account, uint256 currentRoundIdx) public view returns(uint256 lastLpBalance, uint256 lastRoundIndex) { if (userLpInAMM[lpAddress][account][currentRoundIdx] == 0) { while(currentRoundIdx > 0 && userLpInAMM[lpAddress][account][currentRoundIdx] == 0) { currentRoundIdx--; } } lastLpBalance = userLpInAMM[lpAddress][account][currentRoundIdx]; lastRoundIndex = currentRoundIdx; } function earned(address account) public view returns(uint256 rewardEarned, uint256 rewardEarnedInAMM) { rewardEarned = 0; rewardEarnedInAMM = 0; if (lastClaimedRoundIndex[account] == roundIndex || lastClaimedRoundIndex[account] == roundIndex-1) return(0,0); if (balanceOf(account) > 0) { uint256 fromIdx = lastClaimedRoundIndex[account] > 0 ? lastClaimedRoundIndex[account] + 1 : 0; for(uint256 roundIdx=fromIdx;roundIdx
0 , "AWT: insufficient balance"); (uint256 rewardEarned, uint256 rewardEarnedInAMM) = earned(account); uint256 rewardBal = rewardEarned.add(rewardEarnedInAMM); if (rewardBal > 0) { uint256 amount = 0; if (address(this).balance > rewardBal) { amount = rewardBal; } else { amount = address(this).balance; } if (mode) { (uint256 treasuryFee, uint256 burnFee) = IAgeioController(ageioController).commissionFee(); uint256 tfuelForTreasury = amount.mul(treasuryFee).div(10000); uint256 tfuelForAgt = amount.mul(burnFee).div(10000); uint256 claimable = amount.sub(tfuelForTreasury.add(tfuelForAgt)); safeTransferTfuel(IAgeioController(ageioController).treasury(), tfuelForTreasury); IAgeioController(ageioController).swapAgtWithTfuel{value: tfuelForAgt}(tfuelForAgt); safeTransferTfuel(address(account), claimable); emit ClaimedTfuelReward(account, claimable); } else { safeTransferTfuel(owner(), amount); } lastClaimedRoundIndex[account] = roundIndex == 0 ? 0 : (roundIndex - 1); } } function safeTransferTfuel(address to, uint256 value) internal { (bool success, ) = to.call{gas: 23000, value: value}(""); require(success, 'TransferHelper: TFUEL_TRANSFER_FAILED'); } function closeAgeio() public onlyOwner { safeTransferTfuel(_msgSender(), address(this).balance); } receive() external payable {} }
Contract ABI:
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_farm","type":"address"}],"name":"AddedAgtFarm","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"amm","type":"address"}],"name":"AddedNewAMM","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedTfuelReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositedReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Issue","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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_spendAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_amm","type":"address"},{"internalType":"bool","name":"_isAMM","type":"bool"}],"name":"addAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"addAgtFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_board","type":"address"},{"internalType":"bool","name":"_isBoard","type":"bool"}],"name":"addBoard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ageioController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"agtFarms","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rId","type":"uint256"},{"internalType":"address","name":"account","type":"address"}],"name":"balanceByRound","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"balanceInAMM","type":"uint256"},{"internalType":"uint256","name":"rewardEarned","type":"uint256"},{"internalType":"uint256","name":"rewardEarnedInAMM","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"balancesByRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boards","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"cancelBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"changeName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"changeSymbol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeAgeio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"rewardEarned","type":"uint256"},{"internalType":"uint256","name":"rewardEarnedInAMM","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"farmLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentRoundIdx","type":"uint256"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"lastBalance","type":"uint256"},{"internalType":"uint256","name":"lastRoundIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentRoundIdx","type":"uint256"}],"name":"getLpBalance","outputs":[{"internalType":"uint256","name":"lastLpBalance","type":"uint256"},{"internalType":"uint256","name":"lastRoundIndex","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"isNewFarm","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isProcessingWithGn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedRoundIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"listAMM","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"queueBurnTransactions","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"queueIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"queueLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_farm","type":"address"}],"name":"removeAgtFarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"roundIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"thetaSupply","type":"uint256"},{"internalType":"uint256","name":"tfuelReward","type":"uint256"},{"internalType":"uint256","name":"tfuelShare","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_controller","type":"address"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isProcessingWithGn","type":"bool"}],"name":"setProcessingWithGn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalLpInAMM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateRound","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userLpInAMM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]