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:
0xb1b6a585e0d6287d9f7cfdda410d9861faa07ef7
Name:
Ageio Wrapped Theta
Symbol:
AWT
Total Supply:
0
Decimal:
18
Compiler Version:
v0.8.15
Published Contract:
Send Transactions
TNT-20 Transactions
TNT-721 Transactions
Contract
Contract ByteCode:
0x6080604052600436106102cc5760003560e01c80637974794e11610175578063ab91c7b0116100dc578063d93efe9411610095578063eadf62581161006f578063eadf62581461099b578063ed9e4fd2146109a3578063f2fde38b146109c3578063fec0fb60146109e357600080fd5b8063d93efe94146108f7578063dd62ed3e14610935578063e3f4ce551461097b57600080fd5b8063ab91c7b01461082f578063b0b73edc14610845578063b88a802f14610872578063be82f41414610887578063cd21b3d9146108a7578063d46b6a30146108c757600080fd5b806392eefe9b1161012e57806392eefe9b146107805780639406d106146107a057806395d89b41146107ba578063a3895fff146107cf578063a457c2d7146107ef578063a9059cbb1461080f57600080fd5b80637974794e146106935780638a48a515146106b35780638c31d54d146106c85780638c65c81f146107005780638da5cb5b146107425780639156cd231461076057600080fd5b80633a0d7ddc11610234578063648036ae116101ed57806370a08231116101c757806370a082311461061e578063715018a61461063e57806378b0bde01461065357806378bfd8ae1461067357600080fd5b8063648036ae146105a8578063648991fd146105be57806367fe3362146105fe57600080fd5b80633a0d7ddc146104c057806340c10f19146104f857806342966c681461051857806349a852e5146105385780634cae6d62146105685780635353a2d81461058857600080fd5b806323b872dd1161028657806323b872dd146103c55780632b04e840146103e557806330e0789e14610405578063313ce5671461042557806332e9b9231461044157806339509351146104a057600080fd5b80628cc262146102d857806306fdde0314610312578063095ea7b314610334578063104e81ff146103645780631532335e1461038657806318160ddd146103a657600080fd5b366102d357005b600080fd5b3480156102e457600080fd5b506102f86102f336600461285c565b610a1b565b604080519283526020830191909152015b60405180910390f35b34801561031e57600080fd5b50610327610c4d565b6040516103099190612879565b34801561034057600080fd5b5061035461034f3660046128ce565b610cdf565b6040519015158152602001610309565b34801561037057600080fd5b5061038461037f3660046128fa565b610cf7565b005b34801561039257600080fd5b506103846103a13660046128fa565b610e20565b3480156103b257600080fd5b50600f545b604051908152602001610309565b3480156103d157600080fd5b506103546103e03660046128fa565b610eb2565b3480156103f157600080fd5b506102f86104003660046128ce565b610ed6565b34801561041157600080fd5b506103846104203660046128fa565b610f75565b34801561043157600080fd5b5060405160128152602001610309565b34801561044d57600080fd5b5061048161045c36600461293b565b601060205260009081526040902080546001909101546001600160a01b039091169082565b604080516001600160a01b039093168352602083019190915201610309565b3480156104ac57600080fd5b506103546104bb3660046128ce565b611139565b3480156104cc57600080fd5b506104e06104db36600461293b565b611173565b6040516001600160a01b039091168152602001610309565b34801561050457600080fd5b506103846105133660046128ce565b61119d565b34801561052457600080fd5b5061038461053336600461293b565b6112d5565b34801561054457600080fd5b5061035461055336600461285c565b60036020526000908152604090205460ff1681565b34801561057457600080fd5b506102f86105833660046128fa565b611442565b34801561059457600080fd5b506103846105a336600461296a565b611504565b3480156105b457600080fd5b506103b760045481565b3480156105ca57600080fd5b506105de6105d9366004612a1b565b61153a565b604080519485526020850193909352918301526060820152608001610309565b34801561060a57600080fd5b50610384610619366004612a59565b6116f1565b34801561062a57600080fd5b506103b761063936600461285c565b611746565b34801561064a57600080fd5b50610384611761565b34801561065f57600080fd5b506104e061066e36600461293b565b611797565b34801561067f57600080fd5b5061038461068e36600461285c565b6117a7565b34801561069f57600080fd5b506103b76106ae36600461285c565b611897565b3480156106bf57600080fd5b506002546103b7565b3480156106d457600080fd5b506103b76106e33660046128ce565b600a60209081526000928352604080842090915290825290205481565b34801561070c57600080fd5b506105de61071b36600461293b565b60056020526000908152604090208054600182015460028301546003909301549192909184565b34801561074e57600080fd5b506000546001600160a01b03166104e0565b34801561076c57600080fd5b5061038461077b366004612a59565b6118e8565b34801561078c57600080fd5b5061038461079b36600461285c565b6119ce565b3480156107ac57600080fd5b50600c546103549060ff1681565b3480156107c657600080fd5b50610327611a1a565b3480156107db57600080fd5b506103846107ea36600461296a565b611a29565b3480156107fb57600080fd5b5061035461080a3660046128ce565b611a5f565b34801561081b57600080fd5b5061035461082a3660046128ce565b611af1565b34801561083b57600080fd5b506103b760115481565b34801561085157600080fd5b506103b761086036600461285c565b60076020526000908152604090205481565b34801561087e57600080fd5b50610384611aff565b34801561089357600080fd5b506103546108a236600461285c565b611b08565b3480156108b357600080fd5b506001546104e0906001600160a01b031681565b3480156108d357600080fd5b506103546108e236600461285c565b60086020526000908152604090205460ff1681565b34801561090357600080fd5b506103b76109123660046128fa565b600b60209081526000938452604080852082529284528284209052825290205481565b34801561094157600080fd5b506103b7610950366004612a87565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561098757600080fd5b5061038461099636600461293b565b611b6c565b610384611e08565b3480156109af57600080fd5b506103846109be366004612ab5565b6120b3565b3480156109cf57600080fd5b506103846109de36600461285c565b6120f0565b3480156109ef57600080fd5b506103b76109fe3660046128ce565b600660209081526000928352604080842090915290825290205481565b6004546001600160a01b0382166000908152600760205260408120549091829103610a4b57506000928392509050565b6000610a5684611746565b1115610c48576001600160a01b038316600090815260076020526040812054610a80576000610aa4565b6001600160a01b038416600090815260076020526040902054610aa4906001612ae8565b9050805b600454811015610b3e576001600160a01b038516600090815260066020908152604080832084845290915281205490819003610aef576000610aea8784610ed6565b509150505b600082815260056020526040902060020154610b2890610b219064e8d4a5100090610b1b908590612188565b9061219b565b86906121a7565b9450508080610b3690612b00565b915050610aa8565b5060005b600954811015610c4557815b600454811015610c32576000600b600060098581548110610b7157610b71612b19565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938b1682529283528181208582529092528120549150819003610bf0576000610beb60098581548110610bcf57610bcf612b19565b6000918252602090912001546001600160a01b03168985611442565b509150505b600082815260056020526040902060020154610c1c90610b219064e8d4a5100090610b1b908590612188565b9450508080610c2a90612b00565b915050610b4e565b5080610c3d81612b00565b915050610b42565b50505b915091565b606060128054610c5c90612b2f565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890612b2f565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b600033610ced818585610cf7565b5060019392505050565b6001600160a01b038316610d5e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216610dbf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d55565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600e60209081526040808320938616835292905220546000198114610eac5781811015610e9f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d55565b610eac8484848403610cf7565b50505050565b600033610ec0858285610e20565b610ecb858585610f75565b506001949350505050565b6001600160a01b038216600090815260066020908152604080832084845290915281205481908103610f4b575b600083118015610f3457506001600160a01b0384166000908152600660209081526040808320868452909152902054155b15610f4b5782610f4381612b69565b935050610f03565b50506001600160a01b03909116600090815260066020908152604080832084845290915290205491565b6001600160a01b038316610fd95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d55565b6001600160a01b03821661103b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d55565b6001600160a01b0383166000908152600d6020526040902054818110156110b35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d55565b6001600160a01b038085166000908152600d60205260408082208585039055918516815220546110e4908390612ae8565b6001600160a01b038085166000818152600d60205260409081902093909355915190861690600080516020612dfd833981519152906111269086815260200190565b60405180910390a3610eac8484846121b3565b336000818152600e602090815260408083206001600160a01b0387168452909152812054909190610ced908290869061037f908790612ae8565b6002818154811061118357600080fd5b6000918252602090912001546001600160a01b0316905081565b3360009081526003602052604090205460ff166111fc5760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610d55565b6001600160a01b0382166112525760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d55565b80600f60008282546112649190612ae8565b90915550506001600160a01b0382166000908152600d602052604081208054839290611291908490612ae8565b90915550506040518181526001600160a01b03831690600090600080516020612dfd8339815191529060200160405180910390a36112d1600083836121b3565b5050565b600c5460ff161561131b5760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610d55565b336113385760405162461bcd60e51b8152600401610d5590612b80565b611340335b50565b61134c335b6001612448565b336000908152600d60205260409020548181101561137c5760405162461bcd60e51b8152600401610d5590612bc1565b336000908152600d602052604080822084840390553082529020546113a190836121a7565b306000908152600d60205260408120919091556113bd33611897565b600081815260106020526040902080546001600160a01b031916331781556001810154919250906113ee90856121a7565b60018201556011548203611412576011805490600061140c83612b00565b91905055505b60405184815230903390600080516020612dfd8339815191529060200160405180910390a3610eac3330866121b3565b6001600160a01b038084166000908152600b602090815260408083209386168352928152828220848352905290812054819081036114cd575b6000831180156114b657506001600160a01b038086166000908152600b60209081526040808320938816835292815282822086835290522054155b156114cd57826114c581612b69565b93505061147b565b50506001600160a01b039283166000908152600b602090815260408083209490951682529283528381208282529092529190205491565b6000546001600160a01b0316331461152e5760405162461bcd60e51b8152600401610d5590612c03565b60126112d18282612c86565b60008060008061154985611746565b9350600092506000915060009050600454861115611572575060009250829150819050806116e8565b83156116e8576001600160a01b0385166000908152600660209081526040808320898452909152812054908190036115b55760006115b08789610ed6565b509150505b6000878152600560205260409020600201546115e8906115e19064e8d4a5100090610b1b908590612188565b84906121a7565b925060005b6009548110156116e5576000600b60006009848154811061161057611610612b19565b60009182526020808320909101546001600160a01b0390811684528382019490945260409283018220938c1682529283528181208c8252909252812054915081900361168f57600061168a6009848154811061166e5761166e612b19565b6000918252602090912001546001600160a01b03168a8c611442565b509150505b61169986826121a7565b60008a8152600560205260409020600201549096506116cf906116c89064e8d4a5100090610b1b908590612188565b85906121a7565b93505080806116dd90612b00565b9150506115ed565b50505b92959194509250565b6000546001600160a01b0316331461171b5760405162461bcd60e51b8152600401610d5590612c03565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b0316331461178b5760405162461bcd60e51b8152600401610d5590612c03565b6117956000612736565b565b6009818154811061118357600080fd5b6000546001600160a01b031633146117d15760405162461bcd60e51b8152600401610d5590612c03565b6001600160a01b038116158015906117e95750803b15155b80156117f957506117f981611b08565b6118455760405162461bcd60e51b815260206004820152601c60248201527f4157543a206661726d20697320616c7265616479206578697374732e000000006044820152606401610d55565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0392909216919091179055565b6000805b6011548110156118de576000818152601060205260409020546001600160a01b038085169116036118cc5792915050565b806118d681612b00565b91505061189b565b5050601154919050565b6000546001600160a01b031633146119125760405162461bcd60e51b8152600401610d5590612c03565b6001600160a01b03821660009081526008602052604090205460ff166119965760098054600181019091557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0384169081179091556000908152600860205260409020805460ff19168215151790555b6040516001600160a01b038316907fefa66f79f2acb895724ce328f8b91e1832718605c2899b1df014221d41920b3990600090a25050565b6000546001600160a01b031633146119f85760405162461bcd60e51b8152600401610d5590612c03565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b606060138054610c5c90612b2f565b6000546001600160a01b03163314611a535760405162461bcd60e51b8152600401610d5590612c03565b60136112d18282612c86565b336000818152600e602090815260408083206001600160a01b038716845290915281205490919083811015611ae45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d55565b610ecb8286868403610cf7565b600033610ced818585610f75565b61179533611345565b6000805b600254811015611b635760028181548110611b2957611b29612b19565b6000918252602090912001546001600160a01b0390811690841603611b515750600092915050565b80611b5b81612b00565b915050611b0c565b50600192915050565b600c5460ff1615611bb25760405162461bcd60e51b815260206004820152601060248201526f1055d50e88139bdd08185b1b1bddd95960821b6044820152606401610d55565b33611bcf5760405162461bcd60e51b8152600401610d5590612b80565b6000611bda33611897565b6000818152601060205260409020600181015491925090831115611c405760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a20496e73756666696369656e742062616c616e636500000000006044820152606401610d55565b306000908152600d602052604090205483811015611c705760405162461bcd60e51b8152600401610d5590612bc1565b306000908152600d60205260408082208684039055338252902054611c9590856121a7565b336000908152600d60205260409020556001820154611cb49085612786565b60018301819055600003611dd8576001601154611cd19190612d46565b831015611d8b57825b6001601154611ce99190612d46565b811015611d895760106000611cff836001612ae8565b8152602080820192909252604090810160009081205484825260109384905291812080546001600160a01b0319166001600160a01b0390931692909217909155611d4a836001612ae8565b81526020019081526020016000206001015460106000838152602001908152602001600020600101819055508080611d8190612b00565b915050611cda565b505b601060006001601154611d9e9190612d46565b81526020810191909152604001600090812080546001600160a01b03191681556001018190556011805491611dd283612b69565b91905055505b60405184815233903090600080516020612dfd8339815191529060200160405180910390a3610eac3033866121b3565b3360009081526003602052604090205460ff16611e675760405162461bcd60e51b815260206004820152601b60248201527f4572726f723a2043616c6c6572206973206e6f7420626f6172642e00000000006044820152606401610d55565b341561179557600f5415611795576004546000908152600560205260409020600f548155346001820155611eac611e9d600f5490565b610b1b3464e8d4a51000612188565b600282015542600382015560048054906000611ec783612b00565b919050555060005b601154811015611f0b57600081815260106020526040812080546001600160a01b03191681556001015580611f0381612b00565b915050611ecf565b5060006011819055600c805460ff19169055308152600d60205260409020548015611f8857611f3b306000612448565b80600f6000828254611f4d9190612d46565b9091555050306000818152600d6020908152604080832083905551848152919291600080516020612dfd833981519152910160405180910390a35b60005b6002548110156120ae57600060028281548110611faa57611faa612b19565b60009182526020822001546001600160a01b03169150611fc982611746565b111561209b57600080611fdb83610a1b565b90925090506000611fec83836121a7565b905080156120975760008147116120035747612005565b815b9050846001600160a01b0316639789cebd826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561204257600080fd5b505af1158015612056573d6000803e3d6000fd5b50505050506004546000146120795760016004546120749190612d46565b61207c565b60005b6001600160a01b038616600090815260076020526040902055505b5050505b50806120a681612b00565b915050611f8b565b505050565b6000546001600160a01b031633146120dd5760405162461bcd60e51b8152600401610d5590612c03565b600c805460ff1916911515919091179055565b6000546001600160a01b0316331461211a5760405162461bcd60e51b8152600401610d5590612c03565b6001600160a01b03811661217f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d55565b61133d81612736565b60006121948284612d5d565b9392505050565b60006121948284612d7c565b60006121948284612ae8565b6001600160a01b0383161561233a576121cb83611746565b6001600160a01b038416600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff161561233a576001600160a01b0383166000908152600a60209081526040808320600454845290915290205481116122ed576001600160a01b0383166000908152600a6020908152604080832060045484529091529020546122629082612786565b6001600160a01b038085166000818152600a6020908152604080832060048054855290835281842096909655928252600b8152828220938716825292835281812093548152929091529020546122b89082612786565b6001600160a01b038085166000908152600b60209081526040808320938716835292815282822060045483529052205561233a565b6001600160a01b038084166000818152600a60209081526040808320600480548552908352818420849055938352600b825280832094871683529381528382209254825291909152908120555b6001600160a01b038216156120ae5761235282611746565b6001600160a01b038316600081815260066020908152604080832060045484528252808320949094559181526008909152205460ff16156120ae576001600160a01b0382166000908152600a6020908152604080832060045484529091529020546123bd90826121a7565b6001600160a01b038084166000818152600a6020908152604080832060048054855290835281842096909655928252600b81528282209388168252928352818120935481529290915290205461241390826121a7565b6001600160a01b038084166000908152600b602090815260408083209388168352928152828220600454835290522055505050565b600061245383611746565b116124a05760405162461bcd60e51b815260206004820152601960248201527f4157543a20696e73756666696369656e742062616c616e6365000000000000006044820152606401610d55565b6000806124ac84610a1b565b909250905060006124bd83836121a7565b9050801561272f576000814711156124d65750806124d9565b50475b84156126da5760015460408051631bec7ac360e21b8152815160009384936001600160a01b0390911692636fb1eb0c92600480830193928290030181865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190612d9e565b90925090506000612564612710610b1b8686612188565b90506000612578612710610b1b8786612188565b9050600061259061258984846121a7565b8790612786565b9050612612600160009054906101000a90046001600160a01b03166001600160a01b03166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260c9190612dc2565b84612792565b60015460405163addb4f9f60e01b8152600481018490526001600160a01b039091169063addb4f9f90849060240160206040518083038185885af115801561265e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126839190612ddf565b5061268e8b82612792565b604080516001600160a01b038d168152602081018390527f3d95701a8a1f372b6f6f5ecc5917bf2ba13f339495cce49691ca0a101fb9d424910160405180910390a150505050506126f5565b6126f56126ef6000546001600160a01b031690565b82612792565b6004541561271157600160045461270c9190612d46565b612714565b60005b6001600160a01b038716600090815260076020526040902055505b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006121948284612d46565b6000826001600160a01b03166159d883604051600060405180830381858888f193505050503d80600081146127e3576040519150601f19603f3d011682016040523d82523d6000602084013e6127e8565b606091505b50509050806120ae5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657248656c7065723a20544655454c5f5452414e534645525f46604482015264105253115160da1b6064820152608401610d55565b6001600160a01b038116811461133d57600080fd5b60006020828403121561286e57600080fd5b813561219481612847565b600060208083528351808285015260005b818110156128a65785810183015185820160400152820161288a565b818111156128b8576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156128e157600080fd5b82356128ec81612847565b946020939093013593505050565b60008060006060848603121561290f57600080fd5b833561291a81612847565b9250602084013561292a81612847565b929592945050506040919091013590565b60006020828403121561294d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561297c57600080fd5b813567ffffffffffffffff8082111561299457600080fd5b818401915084601f8301126129a857600080fd5b8135818111156129ba576129ba612954565b604051601f8201601f19908116603f011681019083821181831017156129e2576129e2612954565b816040528281528760208487010111156129fb57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60008060408385031215612a2e57600080fd5b823591506020830135612a4081612847565b809150509250929050565b801515811461133d57600080fd5b60008060408385031215612a6c57600080fd5b8235612a7781612847565b91506020830135612a4081612a4b565b60008060408385031215612a9a57600080fd5b8235612aa581612847565b91506020830135612a4081612847565b600060208284031215612ac757600080fd5b813561219481612a4b565b634e487b7160e01b600052601160045260246000fd5b60008219821115612afb57612afb612ad2565b500190565b600060018201612b1257612b12612ad2565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612b4357607f821691505b602082108103612b6357634e487b7160e01b600052602260045260246000fd5b50919050565b600081612b7857612b78612ad2565b506000190190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f8211156120ae57600081815260208120601f850160051c81016020861015612c5f5750805b601f850160051c820191505b81811015612c7e57828155600101612c6b565b505050505050565b815167ffffffffffffffff811115612ca057612ca0612954565b612cb481612cae8454612b2f565b84612c38565b602080601f831160018114612ce95760008415612cd15750858301515b600019600386901b1c1916600185901b178555612c7e565b600085815260208120601f198616915b82811015612d1857888601518255948401946001909101908401612cf9565b5085821015612d365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082821015612d5857612d58612ad2565b500390565b6000816000190483118215151615612d7757612d77612ad2565b500290565b600082612d9957634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215612db157600080fd5b505080516020909101519092909150565b600060208284031215612dd457600080fd5b815161219481612847565b600060208284031215612df157600080fd5b815161219481612a4b56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212200332cb8fa1bed9d803fc559603dc8bee50a003b644b9d4a40c414ff0683ebe5164736f6c634300080f0033
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'); } 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":"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"}]