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:
0xa82ac6662275a6af739db75b6f77687872f8af27
Name:
Ageio Wrapped Theta
Symbol:
AWT
Total Supply:
454.60
Decimal:
18
Compiler Version:
v0.8.15
Published Contract:
Send Transactions
TNT-20 Transactions
TNT-721 Transactions
Contract
Contract ByteCode:
0x60806040526004361061031d5760003560e01c806378bfd8ae116101ab578063ab91c7b0116100f7578063dd62ed3e11610095578063eadf62581161006f578063eadf625814610a41578063ed9e4fd214610a49578063f2fde38b14610a69578063fec0fb6014610a8957600080fd5b8063dd62ed3e146109bb578063e2d6f63414610a01578063e3f4ce5514610a2157600080fd5b8063be82f414116100d1578063be82f4141461090d578063cd21b3d91461092d578063d46b6a301461094d578063d93efe941461097d57600080fd5b8063ab91c7b0146108b5578063b0b73edc146108cb578063b88a802f146108f857600080fd5b80639156cd231161016457806395d89b411161013e57806395d89b4114610840578063a3895fff14610855578063a457c2d714610875578063a9059cbb1461089557600080fd5b80639156cd23146107e657806392eefe9b146108065780639406d1061461082657600080fd5b806378bfd8ae146106f95780637974794e146107195780638a48a515146107395780638c31d54d1461074e5780638c65c81f146107865780638da5cb5b146107c857600080fd5b80633a0d7ddc1161026a5780635353a2d81161022357806367fe3362116101fd57806367fe33621461068457806370a08231146106a4578063715018a6146106c457806378b0bde0146106d957600080fd5b80635353a2d81461060e578063648036ae1461062e578063648991fd1461064457600080fd5b80633a0d7ddc1461053157806340c10f191461056957806342966c681461058957806349a852e5146105a95780634cae6d62146105d95780634f285d8e146105f957600080fd5b806323b872dd116102d757806330e0789e116102b157806330e0789e14610476578063313ce5671461049657806332e9b923146104b2578063395093511461051157600080fd5b806323b872dd146104165780632784385f146104365780632b04e8401461045657600080fd5b80628cc2621461032957806306fdde0314610363578063095ea7b314610385578063104e81ff146103b55780631532335e146103d757806318160ddd146103f757600080fd5b3661032457005b600080fd5b34801561033557600080fd5b50610349610344366004612c47565b610ac1565b604080519283526020830191909152015b60405180910390f35b34801561036f57600080fd5b50610378610d24565b60405161035a9190612c64565b34801561039157600080fd5b506103a56103a0366004612cb9565b610db6565b604051901515815260200161035a565b3480156103c157600080fd5b506103d56103d0366004612ce5565b610dce565b005b3480156103e357600080fd5b506103d56103f2366004612ce5565b610ef7565b34801561040357600080fd5b50600f545b60405190815260200161035a565b34801561042257600080fd5b506103a5610431366004612ce5565b610f89565b34801561044257600080fd5b506103d5610451366004612c47565b610fad565b34801561046257600080fd5b50610349610471366004612cb9565b61117e565b34801561048257600080fd5b506103d5610491366004612ce5565b61121d565b3480156104a257600080fd5b506040516012815260200161035a565b3480156104be57600080fd5b506104f26104cd366004612d26565b601060205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161035a565b34801561051d57600080fd5b506103a561052c366004612cb9565b6113e1565b34801561053d57600080fd5b5061055161054c366004612d26565b61141b565b6040516001600160a01b03909116815260200161035a565b34801561057557600080fd5b506103d5610584366004612cb9565b611445565b34801561059557600080fd5b506103d56105a4366004612d26565b61154d565b3480156105b557600080fd5b506103a56105c4366004612c47565b60036020526000908152604090205460ff1681565b3480156105e557600080fd5b506103496105f4366004612ce5565b6116ba565b34801561060557600080fd5b506103d561177c565b34801561061a57600080fd5b506103d5610629366004612d55565b6117b2565b34801561063a57600080fd5b5061040860045481565b34801561065057600080fd5b5061066461065f366004612e06565b6117e8565b60408051948552602085019390935291830152606082015260800161035a565b34801561069057600080fd5b506103d561069f366004612e44565b61199f565b3480156106b057600080fd5b506104086106bf366004612c47565b6119f4565b3480156106d057600080fd5b506103d5611a0f565b3480156106e557600080fd5b506105516106f4366004612d26565b611a43565b34801561070557600080fd5b506103d5610714366004612c47565b611a53565b34801561072557600080fd5b50610408610734366004612c47565b611b43565b34801561074557600080fd5b50600254610408565b34801561075a57600080fd5b50610408610769366004612cb9565b600a60209081526000928352604080842090915290825290205481565b34801561079257600080fd5b506106646107a1366004612d26565b60056020526000908152604090208054600182015460028301546003909301549192909184565b3480156107d457600080fd5b506000546001600160a01b0316610551565b3480156107f257600080fd5b506103d5610801366004612e44565b611b94565b34801561081257600080fd5b506103d5610821366004612c47565b611c7a565b34801561083257600080fd5b50600c546103a59060ff1681565b34801561084c57600080fd5b50610378611cc6565b34801561086157600080fd5b506103d5610870366004612d55565b611cd5565b34801561088157600080fd5b506103a5610890366004612cb9565b611d0b565b3480156108a157600080fd5b506103a56108b0366004612cb9565b611d9d565b3480156108c157600080fd5b5061040860115481565b3480156108d757600080fd5b506104086108e6366004612c47565b60076020526000908152604090205481565b34801561090457600080fd5b506103d5611dab565b34801561091957600080fd5b506103a5610928366004612c47565b611e13565b34801561093957600080fd5b50600154610551906001600160a01b031681565b34801561095957600080fd5b506103a5610968366004612c47565b60086020526000908152604090205460ff1681565b34801561098957600080fd5b50610408610998366004612ce5565b600b60209081526000938452604080852082529284528284209052825290205481565b3480156109c757600080fd5b506104086109d6366004612e72565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b348015610a0d57600080fd5b506103d5610a1c366004612cb9565b611e77565b348015610a2d57600080fd5b506103d5610a3c366004612d26565b611f87565b6103d5612223565b348015610a5557600080fd5b506103d5610a64366004612ea0565b61249e565b348015610a7557600080fd5b506103d5610a84366004612c47565b6124db565b348015610a9557600080fd5b50610408610aa4366004612cb9565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b038216600090815260076020526040812054909182911480610b1257506001600454610af79190612ed3565b6001600160a01b038416600090815260076020526040902054145b15610b2257506000928392509050565b6000610b2d846119f4565b1115610d1f576001600160a01b038316600090815260076020526040812054610b57576000610b7b565b6001600160a01b038416600090815260076020526040902054610b7b906001612eea565b9050805b600454811015610c15576001600160a01b038516600090815260066020908152604080832084845290915281205490819003610bc6576000610bc1878461117e565b509150505b600082815260056020526040902060020154610bff90610bf89064e8d4a5100090610bf2908590612573565b90612586565b8690612592565b9450508080610c0d90612f02565b915050610b7f565b5060005b600954811015610d1c57815b600454811015610d09576000600b600060098581548110610c4857610c48612f1b565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938b1682529283528181208582529092528120549150819003610cc7576000610cc260098581548110610ca657610ca6612f1b565b6000918252602090912001546001600160a01b031689856116ba565b509150505b600082815260056020526040902060020154610cf390610bf89064e8d4a5100090610bf2908590612573565b9450508080610d0190612f02565b915050610c25565b5080610d1481612f02565b915050610c19565b50505b915091565b606060128054610d3390612f31565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5f90612f31565b8015610dac5780601f10610d8157610100808354040283529160200191610dac565b820191906000526020600020905b815481529060010190602001808311610d8f57829003601f168201915b5050505050905090565b600033610dc4818585610dce565b5060019392505050565b6001600160a01b038316610e355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216610e965760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e2c565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600e60209081526040808320938616835292905220546000198114610f835781811015610f765760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e2c565b610f838484848403610dce565b50505050565b600033610f97858285610ef7565b610fa285858561121d565b506001949350505050565b6000546001600160a01b03163314610fd75760405162461bcd60e51b8152600401610e2c90612f6b565b6001600160a01b03811615801590610fef5750803b15155b80156110015750610fff81611e13565b155b61104d5760405162461bcd60e51b815260206004820152601a60248201527f4157543a206661726d20646f6573206e6f74206578697374732e0000000000006044820152606401610e2c565b6000805b6002548110156110a3576002818154811061106e5761106e612f1b565b6000918252602090912001546001600160a01b0390811690841603611091578091505b8061109b81612f02565b915050611051565b50805b6002546110b590600190612ed3565b8110156111405760026110c9826001612eea565b815481106110d9576110d9612f1b565b600091825260209091200154600280546001600160a01b03909216918390811061110557611105612f1b565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558061113881612f02565b9150506110a6565b506002805461115190600190612ed3565b8154811061116157611161612f1b565b600091825260209091200180546001600160a01b03191690555050565b6001600160a01b0382166000908152600660209081526040808320848452909152812054819081036111f3575b6000831180156111dc57506001600160a01b0384166000908152600660209081526040808320868452909152902054155b156111f357826111eb81612fa0565b9350506111ab565b50506001600160a01b03909116600090815260066020908152604080832084845290915290205491565b6001600160a01b0383166112815760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610e2c565b6001600160a01b0382166112e35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610e2c565b6001600160a01b0383166000908152600d60205260409020548181101561135b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610e2c565b6001600160a01b038085166000908152600d602052604080822085850390559185168152205461138c908390612eea565b6001600160a01b038085166000818152600d6020526040908190209390935591519086169060008051602061321f833981519152906113ce9086815260200190565b60405180910390a3610f8384848461259e565b336000818152600e602090815260408083206001600160a01b0387168452909152812054909190610dc490829086906103d0908790612eea565b6002818154811061142b57600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526003602052604090205460ff166114745760405162461bcd60e51b8152600401610e2c90612fb7565b6001600160a01b0382166114ca5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610e2c565b80600f60008282546114dc9190612eea565b90915550506001600160a01b0382166000908152600d602052604081208054839290611509908490612eea565b90915550506040518181526001600160a01b0383169060009060008051602061321f8339815191529060200160405180910390a36115496000838361259e565b5050565b600c5460ff16156115935760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610e2c565b336115b05760405162461bcd60e51b8152600401610e2c90612fee565b6115b8335b50565b6115c4335b6001612833565b336000908152600d6020526040902054818110156115f45760405162461bcd60e51b8152600401610e2c9061302f565b336000908152600d602052604080822084840390553082529020546116199083612592565b306000908152600d602052604081209190915561163533611b43565b600081815260106020526040902080546001600160a01b031916331781556001810154919250906116669085612592565b6001820155601154820361168a576011805490600061168483612f02565b91905055505b6040518481523090339060008051602061321f8339815191529060200160405180910390a3610f8333308661259e565b6001600160a01b038084166000908152600b60209081526040808320938616835292815282822084835290529081205481908103611745575b60008311801561172e57506001600160a01b038086166000908152600b60209081526040808320938816835292815282822086835290522054155b15611745578261173d81612fa0565b9350506116f3565b50506001600160a01b039283166000908152600b602090815260408083209490951682529283528381208282529092529190205491565b6000546001600160a01b031633146117a65760405162461bcd60e51b8152600401610e2c90612f6b565b6117b03347612b21565b565b6000546001600160a01b031633146117dc5760405162461bcd60e51b8152600401610e2c90612f6b565b601261154982826130bf565b6000806000806117f7856119f4565b935060009250600091506000905060045486111561182057506000925082915081905080611996565b8315611996576001600160a01b03851660009081526006602090815260408083208984529091528120549081900361186357600061185e878961117e565b509150505b6000878152600560205260409020600201546118969061188f9064e8d4a5100090610bf2908590612573565b8490612592565b925060005b600954811015611993576000600b6000600984815481106118be576118be612f1b565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938c1682529283528181208c8252909252812054915081900361193d5760006119386009848154811061191c5761191c612f1b565b6000918252602090912001546001600160a01b03168a8c6116ba565b509150505b6119478682612592565b60008a81526005602052604090206002015490965061197d906119769064e8d4a5100090610bf2908590612573565b8590612592565b935050808061198b90612f02565b91505061189b565b50505b92959194509250565b6000546001600160a01b031633146119c95760405162461bcd60e51b8152600401610e2c90612f6b565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b03163314611a395760405162461bcd60e51b8152600401610e2c90612f6b565b6117b06000612bd6565b6009818154811061142b57600080fd5b6000546001600160a01b03163314611a7d5760405162461bcd60e51b8152600401610e2c90612f6b565b6001600160a01b03811615801590611a955750803b15155b8015611aa55750611aa581611e13565b611af15760405162461bcd60e51b815260206004820152601c60248201527f4157543a206661726d20697320616c7265616479206578697374732e000000006044820152606401610e2c565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b601154811015611b8a576000818152601060205260409020546001600160a01b03808516911603611b785792915050565b80611b8281612f02565b915050611b47565b5050601154919050565b6000546001600160a01b03163314611bbe5760405162461bcd60e51b8152600401610e2c90612f6b565b6001600160a01b03821660009081526008602052604090205460ff16611c425760098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff19168215151790555b6040516001600160a01b038316907fefa66f79f2acb895724ce328f8b91e1832718605c2899b1df014221d41920b3990600090a25050565b6000546001600160a01b03163314611ca45760405162461bcd60e51b8152600401610e2c90612f6b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060138054610d3390612f31565b6000546001600160a01b03163314611cff5760405162461bcd60e51b8152600401610e2c90612f6b565b601361154982826130bf565b336000818152600e602090815260408083206001600160a01b038716845290915281205490919083811015611d905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e2c565b610fa28286868403610dce565b600033610dc481858561121d565b6001600454611dba9190612ed3565b3360009081526007602052604090205410611e0a5760405162461bcd60e51b815260206004820152601060248201526f115c9c9bdc8e88139bc814995dd85c9960821b6044820152606401610e2c565b6117b0336115bd565b6000805b600254811015611e6e5760028181548110611e3457611e34612f1b565b6000918252602090912001546001600160a01b0390811690841603611e5c5750600092915050565b80611e6681612f02565b915050611e17565b50600192915050565b3360009081526003602052604090205460ff16611ea65760405162461bcd60e51b8152600401610e2c90612fb7565b80611eb0836119f4565b1015611efe5760405162461bcd60e51b815260206004820152601c60248201527f4572726f723a20496e73756666696369656e742062616c616e63652e000000006044820152606401610e2c565b6001600160a01b0382166000908152600d6020526040902054611f219082612c26565b6001600160a01b0383166000908152600d6020526040812091909155600f8054839290611f4f908490612ed3565b90915550506040518181526000906001600160a01b0384169060008051602061321f8339815191529060200160405180910390a35050565b600c5460ff1615611fcd5760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610e2c565b33611fea5760405162461bcd60e51b8152600401610e2c90612fee565b6000611ff533611b43565b600081815260106020526040902060018101549192509083111561205b5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e742062616c616e636500000000006044820152606401610e2c565b306000908152600d60205260409020548381101561208b5760405162461bcd60e51b8152600401610e2c9061302f565b306000908152600d602052604080822086840390553382529020546120b09085612592565b336000908152600d602052604090205560018201546120cf9085612c26565b600183018190556000036121f35760016011546120ec9190612ed3565b8310156121a657825b60016011546121049190612ed3565b8110156121a4576010600061211a836001612eea565b8152602080820192909252604090810160009081205484825260109384905291812080546001600160a01b0319166001600160a01b0390931692909217909155612165836001612eea565b8152602001908152602001600020600101546010600083815260200190815260200160002060010181905550808061219c90612f02565b9150506120f5565b505b6010600060016011546121b99190612ed3565b81526020810191909152604001600090812080546001600160a01b031916815560010181905560118054916121ed83612fa0565b91905055505b6040518481523390309060008051602061321f8339815191529060200160405180910390a3610f8330338661259e565b3360009081526003602052604090205460ff166122525760405162461bcd60e51b8152600401610e2c90612fb7565b34156117b057600f54156117b0576004546000908152600560205260409020600f548155346001820155612297612288600f5490565b610bf23464e8d4a51000612573565b6002820155426003820155600480549060006122b283612f02565b919050555060005b6011548110156122f657600081815260106020526040812080546001600160a01b031916815560010155806122ee81612f02565b9150506122ba565b5060006011819055600c805460ff19169055308152600d6020526040902054801561237357612326306000612833565b80600f60008282546123389190612ed3565b9091555050306000818152600d602090815260408083208390555184815291929160008051602061321f833981519152910160405180910390a35b60005b6002548110156124995760006002828154811061239557612395612f1b565b60009182526020822001546001600160a01b031691506123b4826119f4565b1115612486576000806123c683610ac1565b909250905060006123d78383612592565b905080156124825760008147116123ee57476123f0565b815b9050846001600160a01b0316639789cebd826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561242d57600080fd5b505af1158015612441573d6000803e3d6000fd5b505050505060045460001461246457600160045461245f9190612ed3565b612467565b60005b6001600160a01b038616600090815260076020526040902055505b5050505b508061249181612f02565b915050612376565b505050565b6000546001600160a01b031633146124c85760405162461bcd60e51b8152600401610e2c90612f6b565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146125055760405162461bcd60e51b8152600401610e2c90612f6b565b6001600160a01b03811661256a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e2c565b6115b581612bd6565b600061257f828461317f565b9392505050565b600061257f828461319e565b600061257f8284612eea565b6001600160a01b03831615612725576125b6836119f4565b6001600160a01b038416600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff1615612725576001600160a01b0383166000908152600a60209081526040808320600454845290915290205481116126d8576001600160a01b0383166000908152600a60209081526040808320600454845290915290205461264d9082612c26565b6001600160a01b038085166000818152600a6020908152604080832060048054855290835281842096909655928252600b8152828220938716825292835281812093548152929091529020546126a39082612c26565b6001600160a01b038085166000908152600b602090815260408083209387168352928152828220600454835290522055612725565b6001600160a01b038084166000818152600a60209081526040808320600480548552908352818420849055938352600b825280832094871683529381528382209254825291909152908120555b6001600160a01b038216156124995761273d826119f4565b6001600160a01b038316600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff1615612499576001600160a01b0382166000908152600a6020908152604080832060045484529091529020546127a89082612592565b6001600160a01b038084166000818152600a6020908152604080832060048054855290835281842096909655928252600b8152828220938816825292835281812093548152929091529020546127fe9082612592565b6001600160a01b038084166000908152600b602090815260408083209388168352928152828220600454835290522055505050565b600061283e836119f4565b1161288b5760405162461bcd60e51b815260206004820152601960248201527f4157543a20696e73756666696369656e742062616c616e6365000000000000006044820152606401610e2c565b60008061289784610ac1565b909250905060006128a88383612592565b90508015612b1a576000814711156128c15750806128c4565b50475b8415612ac55760015460408051631bec7ac360e21b8152815160009384936001600160a01b0390911692636fb1eb0c92600480830193928290030181865afa158015612914573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293891906131c0565b9092509050600061294f612710610bf28686612573565b90506000612963612710610bf28786612573565b9050600061297b6129748484612592565b8790612c26565b90506129fd600160009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129f791906131e4565b84612b21565b60015460405163addb4f9f60e01b8152600481018490526001600160a01b039091169063addb4f9f90849060240160206040518083038185885af1158015612a49573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a6e9190613201565b50612a798b82612b21565b604080516001600160a01b038d168152602081018390527f3d95701a8a1f372b6f6f5ecc5917bf2ba13f339495cce49691ca0a101fb9d424910160405180910390a15050505050612ae0565b612ae0612ada6000546001600160a01b031690565b82612b21565b60045415612afc576001600454612af79190612ed3565b612aff565b60005b6001600160a01b038716600090815260076020526040902055505b5050505050565b6000826001600160a01b03166159d883604051600060405180830381858888f193505050503d8060008114612b72576040519150601f19603f3d011682016040523d82523d6000602084013e612b77565b606091505b50509050806124995760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a20544655454c5f5452414e534645525f46604482015264105253115160da1b6064820152608401610e2c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061257f8284612ed3565b6001600160a01b03811681146115b557600080fd5b600060208284031215612c5957600080fd5b813561257f81612c32565b600060208083528351808285015260005b81811015612c9157858101830151858201604001528201612c75565b81811115612ca3576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612ccc57600080fd5b8235612cd781612c32565b946020939093013593505050565b600080600060608486031215612cfa57600080fd5b8335612d0581612c32565b92506020840135612d1581612c32565b929592945050506040919091013590565b600060208284031215612d3857600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612d6757600080fd5b813567ffffffffffffffff80821115612d7f57600080fd5b818401915084601f830112612d9357600080fd5b813581811115612da557612da5612d3f565b604051601f8201601f19908116603f01168101908382118183101715612dcd57612dcd612d3f565b81604052828152876020848701011115612de657600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215612e1957600080fd5b823591506020830135612e2b81612c32565b809150509250929050565b80151581146115b557600080fd5b60008060408385031215612e5757600080fd5b8235612e6281612c32565b91506020830135612e2b81612e36565b60008060408385031215612e8557600080fd5b8235612e9081612c32565b91506020830135612e2b81612c32565b600060208284031215612eb257600080fd5b813561257f81612e36565b634e487b7160e01b600052601160045260246000fd5b600082821015612ee557612ee5612ebd565b500390565b60008219821115612efd57612efd612ebd565b500190565b600060018201612f1457612f14612ebd565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612f4557607f821691505b602082108103612f6557634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600081612faf57612faf612ebd565b506000190190565b6020808252601b908201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e0000000000604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b601f82111561249957600081815260208120601f850160051c810160208610156130985750805b601f850160051c820191505b818110156130b7578281556001016130a4565b505050505050565b815167ffffffffffffffff8111156130d9576130d9612d3f565b6130ed816130e78454612f31565b84613071565b602080601f831160018114613122576000841561310a5750858301515b600019600386901b1c1916600185901b1785556130b7565b600085815260208120601f198616915b8281101561315157888601518255948401946001909101908401613132565b508582101561316f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600081600019048311821515161561319957613199612ebd565b500290565b6000826131bb57634e487b7160e01b600052601260045260246000fd5b500490565b600080604083850312156131d357600080fd5b505080516020909101519092909150565b6000602082840312156131f657600080fd5b815161257f81612c32565b60006020828403121561321357600080fd5b815161257f81612e3656feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cb906e600e92d5248849bce7453b82fdc754a5e0d31d8bbdb96e3b6a472b683964736f6c634300080f0033
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 forceBurn(address account, uint256 amount) public onlyBoard { require(balanceOf(account) >= amount, "Error: Insufficient balance."); _balances[account] = _balances[account].sub(amount); _totalSupply -= amount; emit Transfer(account, address(0), 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":"amount","type":"uint256"}],"name":"forceBurn","outputs":[],"stateMutability":"nonpayable","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"}]