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:
0x3773398a764b0dfafe62332a2a53c8dea3c3b7c9
Name:
Ageio Wrapped Theta
Symbol:
AWT
Total Supply:
4,252.00
Decimal:
18
Compiler Version:
v0.8.15
Published Contract:
Send Transactions
TNT-20 Transactions
TNT-721 Transactions
Contract
Contract ByteCode:
0x6080604052600436106102e75760003560e01c806378bfd8ae11610190578063ab91c7b0116100dc578063d93efe9411610095578063eadf62581161006f578063eadf6258146109cb578063ed9e4fd2146109d3578063f2fde38b146109f3578063fec0fb6014610a1357600080fd5b8063d93efe9414610927578063dd62ed3e14610965578063e3f4ce55146109ab57600080fd5b8063ab91c7b01461085f578063b0b73edc14610875578063b88a802f146108a2578063be82f414146108b7578063cd21b3d9146108d7578063d46b6a30146108f757600080fd5b80639156cd231161014957806395d89b411161012357806395d89b41146107ea578063a3895fff146107ff578063a457c2d71461081f578063a9059cbb1461083f57600080fd5b80639156cd231461079057806392eefe9b146107b05780639406d106146107d057600080fd5b806378bfd8ae146106a35780637974794e146106c35780638a48a515146106e35780638c31d54d146106f85780638c65c81f146107305780638da5cb5b1461077257600080fd5b80633a0d7ddc1161024f5780635353a2d81161020857806367fe3362116101e257806367fe33621461062e57806370a082311461064e578063715018a61461066e57806378b0bde01461068357600080fd5b80635353a2d8146105b8578063648036ae146105d8578063648991fd146105ee57600080fd5b80633a0d7ddc146104db57806340c10f191461051357806342966c681461053357806349a852e5146105535780634cae6d62146105835780634f285d8e146105a357600080fd5b806323b872dd116102a157806323b872dd146103e05780632b04e8401461040057806330e0789e14610420578063313ce5671461044057806332e9b9231461045c57806339509351146104bb57600080fd5b80628cc262146102f357806306fdde031461032d578063095ea7b31461034f578063104e81ff1461037f5780631532335e146103a157806318160ddd146103c157600080fd5b366102ee57005b600080fd5b3480156102ff57600080fd5b5061031361030e3660046128c0565b610a4b565b604080519283526020830191909152015b60405180910390f35b34801561033957600080fd5b50610342610c7d565b60405161032491906128dd565b34801561035b57600080fd5b5061036f61036a366004612932565b610d0f565b6040519015158152602001610324565b34801561038b57600080fd5b5061039f61039a36600461295e565b610d27565b005b3480156103ad57600080fd5b5061039f6103bc36600461295e565b610e50565b3480156103cd57600080fd5b50600f545b604051908152602001610324565b3480156103ec57600080fd5b5061036f6103fb36600461295e565b610ee2565b34801561040c57600080fd5b5061031361041b366004612932565b610f06565b34801561042c57600080fd5b5061039f61043b36600461295e565b610fa5565b34801561044c57600080fd5b5060405160128152602001610324565b34801561046857600080fd5b5061049c61047736600461299f565b601060205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610324565b3480156104c757600080fd5b5061036f6104d6366004612932565b611169565b3480156104e757600080fd5b506104fb6104f636600461299f565b6111a3565b6040516001600160a01b039091168152602001610324565b34801561051f57600080fd5b5061039f61052e366004612932565b6111cd565b34801561053f57600080fd5b5061039f61054e36600461299f565b611305565b34801561055f57600080fd5b5061036f61056e3660046128c0565b60036020526000908152604090205460ff1681565b34801561058f57600080fd5b5061031361059e36600461295e565b611472565b3480156105af57600080fd5b5061039f611534565b3480156105c457600080fd5b5061039f6105d33660046129ce565b61156a565b3480156105e457600080fd5b506103d260045481565b3480156105fa57600080fd5b5061060e610609366004612a7f565b6115a0565b604080519485526020850193909352918301526060820152608001610324565b34801561063a57600080fd5b5061039f610649366004612abd565b611757565b34801561065a57600080fd5b506103d26106693660046128c0565b6117ac565b34801561067a57600080fd5b5061039f6117c7565b34801561068f57600080fd5b506104fb61069e36600461299f565b6117fb565b3480156106af57600080fd5b5061039f6106be3660046128c0565b61180b565b3480156106cf57600080fd5b506103d26106de3660046128c0565b6118fb565b3480156106ef57600080fd5b506002546103d2565b34801561070457600080fd5b506103d2610713366004612932565b600a60209081526000928352604080842090915290825290205481565b34801561073c57600080fd5b5061060e61074b36600461299f565b60056020526000908152604090208054600182015460028301546003909301549192909184565b34801561077e57600080fd5b506000546001600160a01b03166104fb565b34801561079c57600080fd5b5061039f6107ab366004612abd565b61194c565b3480156107bc57600080fd5b5061039f6107cb3660046128c0565b611a32565b3480156107dc57600080fd5b50600c5461036f9060ff1681565b3480156107f657600080fd5b50610342611a7e565b34801561080b57600080fd5b5061039f61081a3660046129ce565b611a8d565b34801561082b57600080fd5b5061036f61083a366004612932565b611ac3565b34801561084b57600080fd5b5061036f61085a366004612932565b611b55565b34801561086b57600080fd5b506103d260115481565b34801561088157600080fd5b506103d26108903660046128c0565b60076020526000908152604090205481565b3480156108ae57600080fd5b5061039f611b63565b3480156108c357600080fd5b5061036f6108d23660046128c0565b611b6c565b3480156108e357600080fd5b506001546104fb906001600160a01b031681565b34801561090357600080fd5b5061036f6109123660046128c0565b60086020526000908152604090205460ff1681565b34801561093357600080fd5b506103d261094236600461295e565b600b60209081526000938452604080852082529284528284209052825290205481565b34801561097157600080fd5b506103d2610980366004612aeb565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b3480156109b757600080fd5b5061039f6109c636600461299f565b611bd0565b61039f611e6c565b3480156109df57600080fd5b5061039f6109ee366004612b19565b612117565b3480156109ff57600080fd5b5061039f610a0e3660046128c0565b612154565b348015610a1f57600080fd5b506103d2610a2e366004612932565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b0382166000908152600760205260408120549091829103610a7b57506000928392509050565b6000610a86846117ac565b1115610c78576001600160a01b038316600090815260076020526040812054610ab0576000610ad4565b6001600160a01b038416600090815260076020526040902054610ad4906001612b4c565b9050805b600454811015610b6e576001600160a01b038516600090815260066020908152604080832084845290915281205490819003610b1f576000610b1a8784610f06565b509150505b600082815260056020526040902060020154610b5890610b519064e8d4a5100090610b4b9085906121ec565b906121ff565b869061220b565b9450508080610b6690612b64565b915050610ad8565b5060005b600954811015610c7557815b600454811015610c62576000600b600060098581548110610ba157610ba1612b7d565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938b1682529283528181208582529092528120549150819003610c20576000610c1b60098581548110610bff57610bff612b7d565b6000918252602090912001546001600160a01b03168985611472565b509150505b600082815260056020526040902060020154610c4c90610b519064e8d4a5100090610b4b9085906121ec565b9450508080610c5a90612b64565b915050610b7e565b5080610c6d81612b64565b915050610b72565b50505b915091565b606060128054610c8c90612b93565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb890612b93565b8015610d055780601f10610cda57610100808354040283529160200191610d05565b820191906000526020600020905b815481529060010190602001808311610ce857829003601f168201915b5050505050905090565b600033610d1d818585610d27565b5060019392505050565b6001600160a01b038316610d8e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216610def5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d85565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600e60209081526040808320938616835292905220546000198114610edc5781811015610ecf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d85565b610edc8484848403610d27565b50505050565b600033610ef0858285610e50565b610efb858585610fa5565b506001949350505050565b6001600160a01b038216600090815260066020908152604080832084845290915281205481908103610f7b575b600083118015610f6457506001600160a01b0384166000908152600660209081526040808320868452909152902054155b15610f7b5782610f7381612bcd565b935050610f33565b50506001600160a01b03909116600090815260066020908152604080832084845290915290205491565b6001600160a01b0383166110095760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d85565b6001600160a01b03821661106b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d85565b6001600160a01b0383166000908152600d6020526040902054818110156110e35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d85565b6001600160a01b038085166000908152600d6020526040808220858503905591851681522054611114908390612b4c565b6001600160a01b038085166000818152600d60205260409081902093909355915190861690600080516020612e61833981519152906111569086815260200190565b60405180910390a3610edc848484612217565b336000818152600e602090815260408083206001600160a01b0387168452909152812054909190610d1d908290869061039a908790612b4c565b600281815481106111b357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526003602052604090205460ff1661122c5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610d85565b6001600160a01b0382166112825760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d85565b80600f60008282546112949190612b4c565b90915550506001600160a01b0382166000908152600d6020526040812080548392906112c1908490612b4c565b90915550506040518181526001600160a01b03831690600090600080516020612e618339815191529060200160405180910390a361130160008383612217565b5050565b600c5460ff161561134b5760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610d85565b336113685760405162461bcd60e51b8152600401610d8590612be4565b611370335b50565b61137c335b60016124ac565b336000908152600d6020526040902054818110156113ac5760405162461bcd60e51b8152600401610d8590612c25565b336000908152600d602052604080822084840390553082529020546113d1908361220b565b306000908152600d60205260408120919091556113ed336118fb565b600081815260106020526040902080546001600160a01b0319163317815560018101549192509061141e908561220b565b60018201556011548203611442576011805490600061143c83612b64565b91905055505b60405184815230903390600080516020612e618339815191529060200160405180910390a3610edc333086612217565b6001600160a01b038084166000908152600b602090815260408083209386168352928152828220848352905290812054819081036114fd575b6000831180156114e657506001600160a01b038086166000908152600b60209081526040808320938816835292815282822086835290522054155b156114fd57826114f581612bcd565b9350506114ab565b50506001600160a01b039283166000908152600b602090815260408083209490951682529283528381208282529092529190205491565b6000546001600160a01b0316331461155e5760405162461bcd60e51b8152600401610d8590612c67565b611568334761279a565b565b6000546001600160a01b031633146115945760405162461bcd60e51b8152600401610d8590612c67565b60126113018282612cea565b6000806000806115af856117ac565b93506000925060009150600090506004548611156115d85750600092508291508190508061174e565b831561174e576001600160a01b03851660009081526006602090815260408083208984529091528120549081900361161b5760006116168789610f06565b509150505b60008781526005602052604090206002015461164e906116479064e8d4a5100090610b4b9085906121ec565b849061220b565b925060005b60095481101561174b576000600b60006009848154811061167657611676612b7d565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938c1682529283528181208c825290925281205491508190036116f55760006116f0600984815481106116d4576116d4612b7d565b6000918252602090912001546001600160a01b03168a8c611472565b509150505b6116ff868261220b565b60008a8152600560205260409020600201549096506117359061172e9064e8d4a5100090610b4b9085906121ec565b859061220b565b935050808061174390612b64565b915050611653565b50505b92959194509250565b6000546001600160a01b031633146117815760405162461bcd60e51b8152600401610d8590612c67565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b031633146117f15760405162461bcd60e51b8152600401610d8590612c67565b611568600061284f565b600981815481106111b357600080fd5b6000546001600160a01b031633146118355760405162461bcd60e51b8152600401610d8590612c67565b6001600160a01b0381161580159061184d5750803b15155b801561185d575061185d81611b6c565b6118a95760405162461bcd60e51b815260206004820152601c60248201527f4157543a206661726d20697320616c7265616479206578697374732e000000006044820152606401610d85565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b601154811015611942576000818152601060205260409020546001600160a01b038085169116036119305792915050565b8061193a81612b64565b9150506118ff565b5050601154919050565b6000546001600160a01b031633146119765760405162461bcd60e51b8152600401610d8590612c67565b6001600160a01b03821660009081526008602052604090205460ff166119fa5760098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff19168215151790555b6040516001600160a01b038316907fefa66f79f2acb895724ce328f8b91e1832718605c2899b1df014221d41920b3990600090a25050565b6000546001600160a01b03163314611a5c5760405162461bcd60e51b8152600401610d8590612c67565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060138054610c8c90612b93565b6000546001600160a01b03163314611ab75760405162461bcd60e51b8152600401610d8590612c67565b60136113018282612cea565b336000818152600e602090815260408083206001600160a01b038716845290915281205490919083811015611b485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d85565b610efb8286868403610d27565b600033610d1d818585610fa5565b61156833611375565b6000805b600254811015611bc75760028181548110611b8d57611b8d612b7d565b6000918252602090912001546001600160a01b0390811690841603611bb55750600092915050565b80611bbf81612b64565b915050611b70565b50600192915050565b600c5460ff1615611c165760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610d85565b33611c335760405162461bcd60e51b8152600401610d8590612be4565b6000611c3e336118fb565b6000818152601060205260409020600181015491925090831115611ca45760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e742062616c616e636500000000006044820152606401610d85565b306000908152600d602052604090205483811015611cd45760405162461bcd60e51b8152600401610d8590612c25565b306000908152600d60205260408082208684039055338252902054611cf9908561220b565b336000908152600d60205260409020556001820154611d18908561289f565b60018301819055600003611e3c576001601154611d359190612daa565b831015611def57825b6001601154611d4d9190612daa565b811015611ded5760106000611d63836001612b4c565b8152602080820192909252604090810160009081205484825260109384905291812080546001600160a01b0319166001600160a01b0390931692909217909155611dae836001612b4c565b81526020019081526020016000206001015460106000838152602001908152602001600020600101819055508080611de590612b64565b915050611d3e565b505b601060006001601154611e029190612daa565b81526020810191909152604001600090812080546001600160a01b03191681556001018190556011805491611e3683612bcd565b91905055505b60405184815233903090600080516020612e618339815191529060200160405180910390a3610edc303386612217565b3360009081526003602052604090205460ff16611ecb5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610d85565b341561156857600f5415611568576004546000908152600560205260409020600f548155346001820155611f10611f01600f5490565b610b4b3464e8d4a510006121ec565b600282015542600382015560048054906000611f2b83612b64565b919050555060005b601154811015611f6f57600081815260106020526040812080546001600160a01b03191681556001015580611f6781612b64565b915050611f33565b5060006011819055600c805460ff19169055308152600d60205260409020548015611fec57611f9f3060006124ac565b80600f6000828254611fb19190612daa565b9091555050306000818152600d6020908152604080832083905551848152919291600080516020612e61833981519152910160405180910390a35b60005b6002548110156121125760006002828154811061200e5761200e612b7d565b60009182526020822001546001600160a01b0316915061202d826117ac565b11156120ff5760008061203f83610a4b565b90925090506000612050838361220b565b905080156120fb5760008147116120675747612069565b815b9050846001600160a01b0316639789cebd826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b50505050506004546000146120dd5760016004546120d89190612daa565b6120e0565b60005b6001600160a01b038616600090815260076020526040902055505b5050505b508061210a81612b64565b915050611fef565b505050565b6000546001600160a01b031633146121415760405162461bcd60e51b8152600401610d8590612c67565b600c805460ff1916911515919091179055565b6000546001600160a01b0316331461217e5760405162461bcd60e51b8152600401610d8590612c67565b6001600160a01b0381166121e35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d85565b61136d8161284f565b60006121f88284612dc1565b9392505050565b60006121f88284612de0565b60006121f88284612b4c565b6001600160a01b0383161561239e5761222f836117ac565b6001600160a01b038416600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff161561239e576001600160a01b0383166000908152600a6020908152604080832060045484529091529020548111612351576001600160a01b0383166000908152600a6020908152604080832060045484529091529020546122c6908261289f565b6001600160a01b038085166000818152600a6020908152604080832060048054855290835281842096909655928252600b81528282209387168252928352818120935481529290915290205461231c908261289f565b6001600160a01b038085166000908152600b60209081526040808320938716835292815282822060045483529052205561239e565b6001600160a01b038084166000818152600a60209081526040808320600480548552908352818420849055938352600b825280832094871683529381528382209254825291909152908120555b6001600160a01b03821615612112576123b6826117ac565b6001600160a01b038316600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff1615612112576001600160a01b0382166000908152600a602090815260408083206004548452909152902054612421908261220b565b6001600160a01b038084166000818152600a6020908152604080832060048054855290835281842096909655928252600b815282822093881682529283528181209354815292909152902054612477908261220b565b6001600160a01b038084166000908152600b602090815260408083209388168352928152828220600454835290522055505050565b60006124b7836117ac565b116125045760405162461bcd60e51b815260206004820152601960248201527f4157543a20696e73756666696369656e742062616c616e6365000000000000006044820152606401610d85565b60008061251084610a4b565b90925090506000612521838361220b565b905080156127935760008147111561253a57508061253d565b50475b841561273e5760015460408051631bec7ac360e21b8152815160009384936001600160a01b0390911692636fb1eb0c92600480830193928290030181865afa15801561258d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b19190612e02565b909250905060006125c8612710610b4b86866121ec565b905060006125dc612710610b4b87866121ec565b905060006125f46125ed848461220b565b879061289f565b9050612676600160009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561264c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126709190612e26565b8461279a565b60015460405163addb4f9f60e01b8152600481018490526001600160a01b039091169063addb4f9f90849060240160206040518083038185885af11580156126c2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126e79190612e43565b506126f28b8261279a565b604080516001600160a01b038d168152602081018390527f3d95701a8a1f372b6f6f5ecc5917bf2ba13f339495cce49691ca0a101fb9d424910160405180910390a15050505050612759565b6127596127536000546001600160a01b031690565b8261279a565b600454156127755760016004546127709190612daa565b612778565b60005b6001600160a01b038716600090815260076020526040902055505b5050505050565b6000826001600160a01b03166159d883604051600060405180830381858888f193505050503d80600081146127eb576040519150601f19603f3d011682016040523d82523d6000602084013e6127f0565b606091505b50509050806121125760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a20544655454c5f5452414e534645525f46604482015264105253115160da1b6064820152608401610d85565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006121f88284612daa565b6001600160a01b038116811461136d57600080fd5b6000602082840312156128d257600080fd5b81356121f8816128ab565b600060208083528351808285015260005b8181101561290a578581018301518582016040015282016128ee565b8181111561291c576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561294557600080fd5b8235612950816128ab565b946020939093013593505050565b60008060006060848603121561297357600080fd5b833561297e816128ab565b9250602084013561298e816128ab565b929592945050506040919091013590565b6000602082840312156129b157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156129e057600080fd5b813567ffffffffffffffff808211156129f857600080fd5b818401915084601f830112612a0c57600080fd5b813581811115612a1e57612a1e6129b8565b604051601f8201601f19908116603f01168101908382118183101715612a4657612a466129b8565b81604052828152876020848701011115612a5f57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215612a9257600080fd5b823591506020830135612aa4816128ab565b809150509250929050565b801515811461136d57600080fd5b60008060408385031215612ad057600080fd5b8235612adb816128ab565b91506020830135612aa481612aaf565b60008060408385031215612afe57600080fd5b8235612b09816128ab565b91506020830135612aa4816128ab565b600060208284031215612b2b57600080fd5b81356121f881612aaf565b634e487b7160e01b600052601160045260246000fd5b60008219821115612b5f57612b5f612b36565b500190565b600060018201612b7657612b76612b36565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612ba757607f821691505b602082108103612bc757634e487b7160e01b600052602260045260246000fd5b50919050565b600081612bdc57612bdc612b36565b506000190190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f82111561211257600081815260208120601f850160051c81016020861015612cc35750805b601f850160051c820191505b81811015612ce257828155600101612ccf565b505050505050565b815167ffffffffffffffff811115612d0457612d046129b8565b612d1881612d128454612b93565b84612c9c565b602080601f831160018114612d4d5760008415612d355750858301515b600019600386901b1c1916600185901b178555612ce2565b600085815260208120601f198616915b82811015612d7c57888601518255948401946001909101908401612d5d565b5085821015612d9a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082821015612dbc57612dbc612b36565b500390565b6000816000190483118215151615612ddb57612ddb612b36565b500290565b600082612dfd57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215612e1557600080fd5b505080516020909101519092909150565b600060208284031215612e3857600080fd5b81516121f8816128ab565b600060208284031215612e5557600080fd5b81516121f881612aaf56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207a086769b9c6bcdb9a9f1a0669af46f2f7951a7176775f3a363f0e1109819b6764736f6c634300080f0033
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 farmLength() public view returns(uint256) { return agtFarms.length; } function isNewFarm(address _farm) public view returns(bool) { 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) 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":[],"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"}]