//SPDX-License-Identifier: MIT pragma solidity ^0.8.4; import "../escrows/EvmTicket.sol"; import "../escrows/Treasury.sol"; /* * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*+++++*@@RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@++++++++*RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR+++++++++@RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*++++++++*RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*+++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR+++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR+R++++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*+RR*+++++++++RRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR+++++++RRRRRR++RRR*+++++++++RRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR++++++++RRRR+++RRRR******+++*RRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR++++++RRRR**+RRRRRR*******++RRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR***+++RRR****RRRRRR********+*RRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR****++@RR****RRRRRRR********+*RRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR****++R##***RRRRRRRRR*********RRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#****+R###**RRRRRRRRRR*********@RRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR##****R###**RRRRRRRRRRR**********RRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR###***####**RRRRRRRRRRRR**********RRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR#####**####**RRRRRRRRRRRRR**********RRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR######*#####**RRRRRRRRRRRRRR*********RRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@######*#####*RRRRRRRRRRRRRRRR*********RRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@##############RRRRRRRRRRRRRRRRR*********RRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR###############RRRRRRRRRRRRRRRRRRR*********RRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@+++++RRRR*RR################RRRRRRRRRRRRRRRRRRR**********RRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRR*++++++++++++*RR####################RRRRRRRRRRRRRRRRR*********RRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRR+++++++++++++**RRR#######################RRRRRRRRRRRRRRRR*********RRRRRR * RRRRRRRRRRRRRRRRRRRRRR+++++++++++++**RRRR#######**################RRRRRRRRRRRRRRR**********RRRRR * RRRRRRRRRRRRRRRRRRRR+++++++++++++***RRRR######*********############*RRRRRRRRRRRRRR*********RRRRR * RRRRRRRRRRRRRRRRRRR++++++++++++****RRRR**####R++***+***###########***RRRRRRRRRRRRR**********RRRR * RRRRRRRRRRRRRRRRR+++++++++++++***RRRRRR***##R++++++++***##*#######**++RRRRRRRRRRRRR*********RRRR * RRRRRRRRRRRRRRRR+++*************RRRRRR*****RR+++*****++++++++++++++++++RRRRRRRRRRRRR*********RRR * RRRRRRRRRRRRRR@****************RRRRRRR++**RRR+********+++*********++++++RRRRRRRRRRRR*********RRR * RRRRRRRRRRRRR******************RRRRRRR+++RRR#####******+************++++*RRRRRRRRRRR*********RRR * RRRRRRRRRRRR******************RRRRRRRR++*R#########*******************++RRRRRRRRRRRRR*********RR * RRRRRRRRRRR******************RRRRRRRRR++*############******************+RR+RRRRRRRRRR*********RR * RRRRRRRRRRR*****************RRRRRRRRRR+*##############**********##*******R@@RRRRRRRRR#********RR * RRRR*RRRRR**********#*******RRRRRRRRRR*###############***********##*****+RR+RRRRRRRRRR*********R * RRRR*RRRR********####******RRRRRRRRRR*#####******######**********###*****RR+RRRRRRRRRR*********R * RRR*RRRR******######*******RRRRRRRRR**###****##****####***********###*****RR+RRRRRRRRR#********R * RRR+RRRR*****######*******RRRRRRRRRR**##**#RRRR###**###************###****RR+RRRRRRRRR#********R * RR*+RRR*****#######*******RRRRRRRRRR**#**#RRRRRRR##**##*************##****RR+*RRRRRRRRR#*******R * RR++RRR****#######********RRRRRRRRRR**#**RRRRRRRRRR#**#***#*********###***RR++RRRRRRRRR#******** * RR++RR****#######********RRRRRRRRRRR****RRRRRRRRRRR##*****##***#****###***RR++RRRRRRRRR#******** * R*++RR***########********RRRRRRRRRRR***RRRRRRRRRRRRR#*****##***#*****##***RR*+RRRRRRRRR##******* * R+++R****#######******+**RRRRRRRRRRR***RRRRRRRRRRRRRR****####**#*****##***RRR++RRRRRRRR#******** * R+++R***########******+**RRRRRRRRRRRR*RRRRRRRRRRRRRRR****####***#****##***RRR++RRRRRRRR#******** * R+++R**#########*****#***RRRRRRRRRRRR*RRRRRRRRRRRRRRRR***####***#*****#***RRR++RRRRRRRR##******* * @+++***########*****#****RRRRRRRRRRRRRRRRRRRRRRRRRRRRR***####***#********RRRR++RRRRRRRR##******* * ++++**#########*****#****RRRRRRRRRRRRRRRRRRRRRRRRRRRRR**#####***#********RRR*++RRRRRRRR##******* * ++++**#########*****#****RRRRRRRRRRRRRRRRRRRRRRRRRRRRR*+#####***#********RRR*++RRRRRRRR##******* * ++++**########*****##*****RRRRRRRRRRRRRRRRRRRRRRRRRRR*++#####**##*******RRRR*+++RRRRRRR##******* * ++++**########*****###****RRRRRRRRRRRRRRRRRRRRRRRRRRR++R#####**##*******RRRR*+++RRRRRRR##******* * ++++*#########*****###****RRRRRRRRRRRRRRRRRRRRRRRRRR+++R####***##*******RRRR*+++RRRRRRR##******* * ++++*#########*****###*****RRRRRRRRRRRRRRRRRRRRRRRRR++RR####***#*******RRRR**+++RRRRRRR##******* * ++++*#########*****###*****RRRRRRRRRRRRRRRRRRRRRRRR*+RR####***##*******RRRR**+++RRRRRRR#******** * ++++*#########*****###*****RRRRRRRRRRRRRRRRRRRRRRRRRRRR###****#*******RRRR@**+++RRRRRRR#******** * ++++*#########*****####*****RRRRRRRRRRRRRRRRRRRRRRRRRRR##***********+@RRRR***++RRRRRRR##******** * ++++*#########******###******RRRRRRRRRRRRRRRRRRRRRRRRR##*****#*****++RRRRR**+++RRRRRRR##******** * +++++*########******###******RRRRRRRRRRRRRRRRRRRRRRRRR************++RRRRR***+++RRRRRRR#********R * @++++*########******####******RRRRRRRRRRRRRRRRRRRRRRR*************+RRRRR****+++RRRRRRR#********R * @++++*#########*****####*******RRRRRRRRRRRRRRRRRRRRR*************+RRRRRR***++++RRRRRRR#********R * R++++**########******####*******RRRRRRRRRRRRRRRRRRR*************+RRRRRR****++++RRRRRR#*********R * R+++++*########******####********RRRRRRRRRRRRRRRR*****++*******+RRRRRR****++++*RRRRRR#*********R * R+++++*#########*****#####*******#RRR++RRRRRRRR+*+++++*******++RRRRRR*****++++RRRRRRR#********RR * RR++++**########******#####*******#RRR@+++++++++++++*******+++RRRRRR******++++RRRRRR#*********RR * RR++++***#######******#####********#RRRRR++++++++******+++++RRRRRR*******+++++RRRRRR#*********RR * RR++++****#######******#####********#RRRRRR@++++++++++++++RRRRRRR*******+++++@RRRRRR*********RRR * RRR+++*****######*******#####*********#RRRRRRRRR*++*++RRRRRRRRR********++++++RRRRRR**********RRR * RRR+++*******#####******######*********##RRRRRRRRRRRRRRRRRRRR**********++++++RRRRRR**********RRR * RRRR++*********###********#####**********###RRRRRRRRRRRRRR************++++++RRRRRR**********RRRR * RRRR++*********************#####************######RR####*************+++++++RRRRRR**********RRRR * RRRR@+**********************#####***************#*******************+++++++@RRRRR**********RRRRR * RRRRR+***********************######********************************++++++++RRRRRR**********RRRRR * RRRRRR+************************#####*****************************+++**++++RRRRRR***********RRRRR * RRRRRR**********#****************####***************************+++**+++++RRRRRR**********RRRRRR * RRRRRRR*********##*******************##***********************++++***++++RRRRRR**********RRRRRRR * RRRRRRRR*********###**+++***********************************++++****+++++RRRRR***********RRRRRRR * RRRRRRRRR*********####*+++*******************************++++++*****++++RRRRRR**********RRRRRRRR * RRRRRRRRR*********######*++*******************************++++******+++RRRRRR***********RRRRRRRR * RRRRRRRRRR*********#######*++****************************+++*******+++RRRRRR***********RRRRRRRRR * RRRRRRRRRRR********##########++***********************++++*********++@RRRRR***********RRRRRRRRRR * RRRRRRRRRRRR********###########*********************++++**********++RRRRRR***********@RRRRRRRRRR * RRRRRRRRRRRRR********#############***************++++************++@RRRRRR***********RRRRRRRRRRR * RRRRRRRRRRRRRR*********###############********+++**##***********++RRRRRRR***********RRRRRRRRRRRR * RRRRRRRRRRRRRRR*********###########################**************RRRRRRR**********+RRRRRRRRRRRRR * RRRRRRRRRRRRRRRRR********########################***************RRRRRRR*********++RRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRR*********#####################**************RRRRRRRR*********++RRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRR*********################****************RRRRRRR*********+++RRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRR*************########*****************RRRRRRRR*********+++@RRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRR**********************************RRRRRRRRR*******+++++RRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRR****************************RRRRRRRRRR*******++++++RRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRR************************RRRRRRRRRRR*****+++++++*RRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*****************RRRRRRRRRRRRR*++*+++++++++*RRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*+++++++++++++RRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR*++++++++++++++RRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR+++++++++++++++RRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRR**RRRRRRRRRRRRRRRRRRRRRRRRRRR*+++++++++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRR+++@RRRRRRRRRRRRRRRRR@++++++++++++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRR@++++++++++*++++++++++++++++++++++++RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR++++++++++++++++++++++++++++*RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR@++++++++++++++++++++*RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR * KODEX EVM-AUTH */ contract EvmAuth is EvmTicket { event NewChallenge( bytes32 challenge, uint256 challengeExpiresAt, uint256 time ); bytes32 public challenge; uint256 public challengeExpiresAt = 0; constructor() Treasury(payable(_msgSender())) { _setupRole(DEFAULT_ADMIN_ROLE, _msgSender()); grantRole(ROLE_MEMBER, _msgSender()); } function nextChallenge() public view returns (uint256 expiresIn) { if ((challengeExpiresAt - block.timestamp) <= 0) { return 0; } return challengeExpiresAt - block.timestamp; } function setChallenge( bytes32 _challenge ) public onlyRole(DEFAULT_ADMIN_ROLE) { challenge = _challenge; challengeExpiresAt = block.timestamp + duration; emit NewChallenge(_challenge, challengeExpiresAt, block.timestamp); } }