Transaction Details
SMART CONTRACT
Transaction Hash
dab1885591dfa53e49e6b66266effb685c3ce8520f3872c74e83f5fa48dcf6dd
Block Status
Smart Contract State
SCID Reserves
| SCID | Amount (Atomic Units) |
|---|---|
| 0000000000000000000000000000000000000000000000000000000000000000 | 0 |
String Variables
| Key | Value |
|---|---|
| C | 2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20227570646174652e6a7322290a33312053544f524528226465736372486472222c20225570646174652066696c6522290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20227570646174652e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c2022333133313937343637386464363030656561376436373931343538326261643731323465643737643839643964613433313137653938383434303664396222290a33372053544f5245282266696c65436865636b53222c202237623834353139656363653130613463636635343564636463336438366236656630396263376336663332316431383539386666323635363737613434623222290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a77696e646f772e6164644576656e744c697374656e657228226c6f6164222c20726573697a65535647293b0a77696e646f772e6164644576656e744c697374656e65722822726573697a65222c20726573697a65535647293b0a66756e6374696f6e20726573697a655356472829207b0a097377203d2077696e646f772e696e6e657257696474683b0a097368203d2077696e646f772e696e6e65724865696768743b0a0975706461746556696577426f7828293b0a7d0a0a66756e6374696f6e2075706461746556696577426f782829207b0a0a09696620286b6579735b223d225d29207a6f6f6d202a3d20302e39383b0a09696620286b6579735b222d225d29207a6f6f6d202a3d20312e30323b0a0a09636f6e7374207669657757203d207377202a207a6f6f6d3b0a09636f6e7374207669657748203d207368202a207a6f6f6d3b0a0a09636f6e73742063616d58203d2063616d43656e7465722e78202d207669657757202f20323b0a09636f6e73742063616d59203d2063616d43656e7465722e79202d207669657748202f20323b0a0a0963616d4c6566742020203d2063616d43656e7465722e78202d20287377202a207a6f6f6d29202f20323b0a0963616d546f70202020203d2063616d43656e7465722e79202d20287368202a207a6f6f6d29202f20323b0a0963616d526967687420203d2063616d43656e7465722e78202b20287377202a207a6f6f6d29202f20323b0a0963616d426f74746f6d203d2063616d43656e7465722e79202b20287368202a207a6f6f6d29202f20323b0a0a097376672e736574417474726962757465282276696577426f78222c2060247b63616d587d20247b63616d597d20247b76696577577d20247b76696577487d60293b0a7d0a0a66756e6374696f6e2075706461746543616d65726128647429207b0a092f2f2063616d65726120666f6c6c6f777320706c617965720a0963616d43656e7465722e78203d2067616d652e706c617965722e783b0a0963616d43656e7465722e79203d2067616d652e706c617965722e793b0a7d0a0a0a2f2f2d2d2d2d2d2d2d2d2d2d0a2f2f2047657420496e7075740a0a77696e646f772e6164644576656e744c697374656e65722822776865656c222c2065203d3e207b0a0969662028652e64656c746159203c203029207a6f6f6d202a3d20302e393b202f2f207a6f6f6d20696e0a09656c7365207a6f6f6d202a3d20312e313b202f2f207a6f6f6d206f75740a0a097a6f6f6d203d204d6174682e6d617828302e322c204d6174682e6d696e287a6f6f6d2c203529293b202f2f20636c616d700a7d293b0a0a77696e646f772e6164644576656e744c697374656e657228226b6579646f776e222c2065203d3e207b090a096b6579735b652e6b65795d203d20747275653b090a7d293b0a77696e646f772e6164644576656e744c697374656e657228226b65797570222c2065203d3e207b0a096b6579735b652e6b65795d203d2066616c73653b0a7d293b0a0a6c65742070726576537461727450726573736564203d2066616c73653b0a66756e6374696f6e20676174686572496e70757428647429207b0a09636f6e73742070203d2067616d652e706c617965723b0a0a092f2f202d2d2d204b4559424f415244202d2d2d0a096c6574206d6f7665203d20286b6579735b2261225d203f202d31203a203029202b20286b6579735b2264225d203f2031203a2030293b0a096c65742076657274203d20286b6579735b2277225d203f2031203a203029202b20286b6579735b2273225d203f202d31203a2030293b0a0a096c65742077616e7450756e6368203d206b6579735b226c225d3b0a096c65742077616e744b69636b20203d206b6579735b223b225d3b0a096c65742077616e744a756d7020203d206b6579735b2220225d3b0a0a096c657420737461727450726573736564203d206b6579735b22457363617065225d0a0a092f2f202d2d2d2047414d45504144202d2d2d0a09636f6e7374206770203d206e6176696761746f722e67657447616d657061647328295b305d3b090a0969662028677029207b0a09092f2f20442d7061640a09096966202867702e627574746f6e735b31345d2e7072657373656429206d6f7665203d202d313b202f2f206c6566740a09096966202867702e627574746f6e735b31355d2e7072657373656429206d6f7665203d2020313b202f2f2072696768740a0a09096966202867702e627574746f6e735b31325d2e70726573736564292076657274203d2020313b202f2f2075700a09096966202867702e627574746f6e735b31335d2e70726573736564292076657274203d202d313b202f2f20646f776e0a0a09092f2f204661636520627574746f6e730a09096966202867702e627574746f6e735b305d2e70726573736564292077616e744a756d7020203d20747275653b202f2f2041203d206a756d700a09096966202867702e627574746f6e735b325d2e70726573736564292077616e7450756e6368203d20747275653b202f2f2058203d2070756e63680a09096966202867702e627574746f6e735b315d2e70726573736564292077616e744b69636b20203d20747275653b202f2f2042203d206b69636b0a09090a0909737461727450726573736564203d2067702e627574746f6e735b395d2e70726573736564207c7c207374617274507265737365643b0a097d0a092f2f202d2d2d204d454e55202d2d2d0a096d656e75287374617274507265737365642c6d6f7665293b0a0970726576537461727450726573736564203d207374617274507265737365643b0a0a092f2f202d2d2d204150504c5920544f20504c41594552202d2d2d0a09702e6d6f7665496e707574203d206d6f76653b0a09702e766572746963616c496e707574203d20766572743b0a0a09702e77616e7450756e6368203d2077616e7450756e63683b0a09702e77616e744b69636b20203d2077616e744b69636b3b0a09702e77616e744a756d70203d2077616e744a756d703b0a0969662028702e77616e744a756d7029206a756d7028293b0a0a7d0a0a0a66756e6374696f6e206a756d702870203d2067616d652e706c6179657229207b202020200a0969662028702e6f6e47726f756e6420262620702e616e696d2e737461746520213d3d226b69636b2229207b0a0909702e7679203d202d67616d652e6a756d70537472656e6774683b0a0909702e6f6e47726f756e64203d2066616c73653b0a0909702e696e416972203d20747275653b0a097d0a7d0a0a66756e6374696f6e206170706c79496e74656e7428656e746974792c647429207b0a09636f6e73742070203d20656e746974793b0a0969662028702e7374756e203e203029207b0a0909702e7374756e202d3d2064742f313030303b0a090972657475726e3b0a097d0a09696620282821702e696e41697220262620702e77616e744b69636b297c7c0a09092821702e696e41697220262620656e746974792e766572746963616c496e707574203c203029297b200a090969662028702e6d6f7665496e70757420213d3d203029207b0a090909696628702e6d6f7665496e707574203e203020297b0a09090909702e666163696e67203d20313b0a0909097d656c73657b0a09090909702e666163696e67203d202d313b0a0909097d0a090909702e6d6f7665496e707574203d20303b0a09097d090a097d09200a0a09702e7678203d20702e6d6f7665496e707574202a20702e73706565643b090a0969662028702e6d6f7665496e70757420213d3d203029207b0a0909696628702e6d6f7665496e707574203e203020297b0a090909702e666163696e67203d20313b0a09097d656c73657b0a090909702e666163696e67203d202d313b0a09097d0a097d0a0a7d0a0a0a66756e6374696f6e207570646174654d6f76656d656e74537461746528656e7469747929207b0a09696628656e746974792e6d6f76655374617465203d3d3d20226479696e67222972657475726e3b0a0a0969662028656e746974792e696e41697220262620656e746974792e7679203c202d302e322920656e746974792e6d6f76655374617465203d20226a756d70223b0a09656c73652069662028656e746974792e696e41697220262620656e746974792e7679203e20302e322920656e746974792e6d6f76655374617465203d202266616c6c223b0a09656c73652069662028656e746974792e6d6f7665496e70757420213d3d20302920656e746974792e6d6f76655374617465203d202277616c6b223b0a09656c73652069662028656e746974792e766572746963616c496e707574203c20302026262021656e746974792e696e4169722920656e746974792e6d6f76655374617465203d202263726f756368223b0a09656c736520656e746974792e6d6f76655374617465203d202269646c65223b0a0a0969662028656e746974792e6d6f76655374617465203d3d3d202263726f7563682229207b0a0909656e746974792e686569676874203d2036303b0a0909656e746974792e736b656c65746f6e4f666673657459203d2031320a097d20656c7365207b0a0909656e746974792e686569676874203d203130303b0a0909656e746974792e736b656c65746f6e4f666673657459203d20303b0a097d0a7d0a0a0a66756e6374696f6e20757064617465416374696f6e537461746528656e7469747929207b0a09656e746974792e616374696f6e5374617465203d20226e6f6e65223b0a0a0969662028656e74697479203d3d3d2067616d652e706c6179657229207b0a09096966202821656e746974792e696e41697229207b0a09090969662028656e746974792e766572746963616c496e707574203c203029207b0a0909090969662028656e746974792e77616e7450756e6368292072657475726e20656e746974792e616374696f6e5374617465203d202263726f75636850756e6368223b0a0909090969662028656e746974792e77616e744b69636b29202072657475726e20656e746974792e616374696f6e5374617465203d202263726f7563684b69636b223b090909090a0909090972657475726e20656e746974792e616374696f6e5374617465203d202263726f756368223b0a0909097d656c736520696628656e746974792e766572746963616c496e707574203e2030297b0a0909090969662028656e746974792e77616e7450756e6368292072657475726e20656e746974792e616374696f6e5374617465203d2028656e746974792e6d6f76655374617465203d3d3d202277616c6b2229203f202277616c6b4869676850756e636822203a20226869676850756e6368223b0a0909090969662028656e746974792e77616e744b69636b292072657475726e20656e746974792e616374696f6e5374617465203d2022686967684b69636b223b20090a0909097d656c73657b0a0909090969662028656e746974792e77616e7450756e63682972657475726e20656e746974792e616374696f6e5374617465203d2028656e746974792e6d6f76655374617465203d3d3d202277616c6b2229203f202277616c6b50756e636822203a202270756e6368223b0a0909090969662028656e746974792e77616e744b69636b2972657475726e20656e746974792e616374696f6e5374617465203d20226b69636b223b0a0909097d0a09097d20656c7365207b0a0909090a09090969662028656e746974792e766572746963616c496e707574203c203029207b0a0909090969662028656e746974792e77616e7450756e6368292072657475726e20656e746974792e616374696f6e5374617465203d20226a756d704c6f7750756e6368223b0a0909090969662028656e746974792e77616e744b69636b29202072657475726e20656e746974792e616374696f6e5374617465203d20226a756d704c6f774b69636b223b090909090a0909097d656c736520696628656e746974792e766572746963616c496e707574203e2030297b0a0909090969662028656e746974792e77616e7450756e6368292072657475726e20656e746974792e616374696f6e5374617465203d20226a756d704869676850756e6368223b0a0909090969662028656e746974792e77616e744b69636b292072657475726e20656e746974792e616374696f6e5374617465203d20226a756d70486967684b69636b223b20090a0909097d656c73657b0a0909090969662028656e746974792e77616e7450756e6368292072657475726e20656e746974792e616374696f6e5374617465203d20226a756d7050756e6368223b0a0909090969662028656e746974792e77616e744b69636b29202072657475726e20656e746974792e616374696f6e5374617465203d20226a756d704b69636b223b0a0909097d0909090a09097d0a097d656c736520696628656e746974792e7479706520213d3d2022626f73732220297b0a090969662028656e746974792e766572746963616c496e707574203d3d203129207b0a09090969662028656e746974792e77616e7450756e636829207b656e746974792e616374696f6e5374617465203d20226869676850756e6368227d0a09090969662028656e746974792e77616e744b69636b29207b656e746974792e616374696f6e5374617465203d2022686967684b69636b227d0a09097d656c73657b0a09090969662028656e746974792e77616e7450756e636829207b656e746974792e616374696f6e5374617465203d202270756e6368227d0a09090969662028656e746974792e77616e744b69636b29207b656e746974792e616374696f6e5374617465203d20226b69636b227d0a09097d090a097d656c73657b0a09092f2f626f73730a090969662028656e746974792e766572746963616c496e707574203d3d203129207b0a09090969662028656e746974792e77616e7450756e636829207b656e746974792e616374696f6e5374617465203d2028656e746974792e6d6f76655374617465203d3d3d202277616c6b2229203f202277616c6b50756e636822203a202270756e6368223b7d0a09090969662028656e746974792e77616e744b69636b29207b656e746974792e616374696f6e5374617465203d2022686967684b69636b227d0a09097d656c73657b0a09090969662028656e746974792e77616e7450756e636829207b656e746974792e616374696f6e5374617465203d2028656e746974792e6d6f76655374617465203d3d3d202277616c6b2229203f202277616c6b4869676850756e636822203a20226869676850756e6368223b7d0a09090969662028656e746974792e77616e744b69636b29207b656e746974792e616374696f6e5374617465203d20226b69636b227d0a09097d090a097d0a7d0a0a0a0a66756e6374696f6e2073656c656374416e696d6174696f6e537461746528656e7469747929207b0a096c65742066696e616c5374617465203d20656e746974792e6d6f766553746174653b0a0a0969662028656e746974792e616374696f6e537461746520213d3d20226e6f6e652229207b0a090966696e616c5374617465203d20656e746974792e616374696f6e53746174653b0a097d0a0a096966202866696e616c537461746520213d3d20656e746974792e616e696d2e737461746529207b0a0909706c6179416e696d6174696f6e28656e746974792c2066696e616c5374617465293b0a097d0a7d0a0a0a66756e6374696f6e20706c6179416e696d6174696f6e28656e746974792c206e616d6529207b0a09636f6e737420616e696d203d20656e746974792e616e696d3b0a0a0969662028616e696d2e7374617465203d3d3d206e616d65292072657475726e3b0a0a09616e696d2e7374617465203d206e616d653b0a09616e696d2e6e657874506f7365203d20706f7365735b6e616d655d3b0a7d0a0a0a0a66756e6374696f6e20757064617465416e696d6174696f6e28656e746974792c20647429207b0a09636f6e737420616e696d203d20656e746974792e616e696d3b0a09616e696d2e6672616d652b2b0a092f2f20496620626c656e64696e6720746f2061206e657720706f73650a0969662028616e696d2e6e657874506f736529207b0a0909616e696d2e63757272656e74506f7365203d20616e696d2e6e657874506f73653b0a0909616e696d2e6e657874506f7365203d206e756c6c3b0a0909616e696d2e6672616d65203d20303b090a097d090a092f2f2057616c6b206379636c65206f766572726964650a0969662028616e696d2e7374617465203d3d3d202277616c6b22207c7c20616e696d2e7374617465203d3d3d202277616c6b50756e636822207c7c20616e696d2e7374617465203d3d3d202277616c6b4869676850756e63682229207b0a09096170706c7957616c6b28656e746974792c206474293b0a0a090969662028616e696d2e7374617465203d3d3d202277616c6b50756e63682229207b0a0909096170706c79426c656e646564506f736528656e746974792c20706f7365732e77616c6b50756e63682c20706f7365732e77616c6b50756e63682c2031293b0a09097d656c73652069662028616e696d2e7374617465203d3d3d202277616c6b4869676850756e63682229207b0a0909096170706c79426c656e646564506f736528656e746974792c20706f7365732e77616c6b4869676850756e63682c20706f7365732e77616c6b4869676850756e63682c2031293b0a09097d0a097d20656c736520696628616e696d2e737461746520213d3d20226479696e6722297b0a09090a09092f2f2049646c652c2070756e63682c206b69636b2c206a756d702c2066616c6c2c206574632e0a09096170706c79426c656e646564506f736528656e746974792c20616e696d2e63757272656e74506f73652c20616e696d2e63757272656e74506f73652c2031293b0a097d656c73657b0a09096170706c79446561746828656e746974792c206474293b0a097d0a7d0a0a66756e6374696f6e20206170706c7957616c6b28656e746974792c6474297b0a09636f6e73742074203d20706572666f726d616e63652e6e6f772829202a202e30313b202f2f2077616c6b207370656564206d756c7469706c6965720a09636f6e737420746f72736f203d20656e746974792e736b656c65746f6e2e746f72736f3b0a09746f72736f2e726f746174696f6e546172676574203d204d6174682e73696e2874202a20302e3529202a20302e30353b0a092f2f20686561640a09746f72736f2e6368696c6472656e2e686561642e726f746174696f6e546172676574203d20303b0a092f2f206c6567730a09746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e546172676574203d20204d6174682e73696e287429202a20302e363b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e546172676574203d202d4d6174682e73696e287429202a20302e363b0a0a09746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e546172676574203d204d6174682e6d6178282d4d6174682e73696e2874202b20302e3529202a20302e342c202d302e31293b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e546172676574203d204d6174682e6d6178284d6174682e73696e2874202b20302e3529202a20302e342c202d302e31293b0a0a092f2f2061726d730a09746f72736f2e6368696c6472656e2e757070657241726d4c2e726f746174696f6e546172676574203d202d4d6174682e73696e287429202a20302e343b0a09746f72736f2e6368696c6472656e2e757070657241726d522e726f746174696f6e546172676574203d20204d6174682e73696e287429202a20302e343b0a0a09746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c2e726f746174696f6e546172676574203d2028204d6174682e73696e2874202b20302e3329202a20302e3129202d313b0a09746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d522e726f746174696f6e546172676574203d2028204d6174682e73696e2874202b20302e3329202a20302e3129202d2e353b0a7d0a66756e6374696f6e20206170706c79446561746828656e746974792c6474297b0a09636f6e73742074203d20706572666f726d616e63652e6e6f772829202a202e30313b202f2f2077616c6b207370656564206d756c7469706c6965720a09636f6e737420746f72736f203d20656e746974792e736b656c65746f6e2e746f72736f3b0a09636f6e7374207b207365676d656e743a207365672c2020706c6174666f726d3a20656e656d79506c6174666f726d20207d203d20676574506c6174666f726d556e64657228656e74697479293b0a09636f6e73742062617365416e676c65203d20736567203f206765745365676d656e74416e676c652873656729203a20303b202f2f2066616c6c6261636b20746f20666c61740a0a09746f72736f2e726f746174696f6e546172676574203d20656e746974792e666163696e67202a202862617365416e676c65202d204d6174682e5049202f2032293b0a0a092f2f206c6567730a09746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e546172676574203d2020303b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e546172676574203d20303b0a0a09746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e546172676574203d20303b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e546172676574203d20303b0a7d0a0a0a66756e6374696f6e206170706c79426c656e646564506f736528656e746974792c20612c20622c207429207b0a09636f6e737420746f72736f203d2020656e746974792e736b656c65746f6e2e746f72736f3b0a0a20202020746f72736f2e6368696c6472656e2e757070657241726d4c2e726f746174696f6e546172676574203d0a20202020202020206c65727028612e757070657241726d4c2c20622e757070657241726d4c2c2074293b0a0a20202020746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c2e726f746174696f6e546172676574203d0a20202020202020206c65727028612e6c6f77657241726d4c2c20622e6c6f77657241726d4c2c2074293b0a0a20202020746f72736f2e6368696c6472656e2e757070657241726d522e726f746174696f6e546172676574203d0a20202020202020206c65727028612e757070657241726d522c20622e757070657241726d522c2074293b0a0a20202020746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d522e726f746174696f6e546172676574203d0a20202020202020206c65727028612e6c6f77657241726d522c20622e6c6f77657241726d522c2074293b0a09696628656e746974792e616e696d2e737461746520213d3d202277616c6b50756e63682220262620656e746974792e616e696d2e737461746520213d3d202277616c6b4869676850756e636822297b0a0909746f72736f2e726f746174696f6e546172676574203d206c65727028612e746f72736f2c20622e746f72736f2c2074293b0a0909746f72736f2e6368696c6472656e2e686561642e726f746174696f6e546172676574203d206c65727028612e686561642c20622e686561642c2074293b0a0a0909746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e546172676574203d0a0909096c65727028612e75707065724c65674c2c20622e75707065724c65674c2c2074293b0a0a0909746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e546172676574203d0a0909096c65727028612e6c6f7765724c65674c2c20622e6c6f7765724c65674c2c2074293b0a0a0909746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e546172676574203d0a0909096c65727028612e75707065724c6567522c20622e75707065724c6567522c2074293b0a0a0909746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e546172676574203d0a0909096c65727028612e6c6f7765724c6567522c20622e6c6f7765724c6567522c2074293b0a097d0a7d0a0a0a66756e6374696f6e206c65727028612c20622c207429207b0a0972657475726e2061202b202862202d206129202a20743b0a7d0a0a66756e6374696f6e20616e676c65446966662820622c6129207b0a096c65742064203d2062202d20613b0a097768696c65202864203e204d6174682e5049292064202d3d204d6174682e5049202a20323b0a097768696c65202864203c202d4d6174682e5049292064202b3d204d6174682e5049202a20323b0a0972657475726e20643b0a7d0a66756e6374696f6e20736d6f6f7468416e676c652863757272656e742c207461726765742c2064742c2062617365537065656429207b0a202020206c65742064696666203d20746172676574202d2063757272656e743b0a0a202020202f2f207772617020696e746f20282d50492c205049290a2020202064696666203d202864696666202b204d6174682e504929202520284d6174682e5049202a203229202d204d6174682e50493b0a09636f6e73742074203d204d6174682e6d696e284d6174682e616273286469666629202f204d6174682e50492c2031293b0a09636f6e73742065617365203d2074202a20743b202f2f2071756164726174696320656173652d696e0a09636f6e7374207370656564203d20626173655370656564202b2065617365202a2032303b0a0a2020202072657475726e2063757272656e74202b2064696666202a206474202a2073706565643b0a7d0a0a66756e6374696f6e20736d6f6f7468426f6e65526f746174696f6e7328656e746974792c647429207b0a09636f6e7374207370656564203d2032303b202f2f20686f77206661737420626f6e657320726f7461746520746f7761726420746172676574730a0964743d6474202f2031303030202f2f2068617320746f20626520696e207365636f6e64730a09636f6e737420746f72736f203d2020656e746974792e736b656c65746f6e2e746f72736f3b090a0a09746f72736f2e6368696c6472656e2e686561642e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e686561642e726f746174696f6e2c20746f72736f2e6368696c6472656e2e686561642e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e757070657241726d4c2e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e757070657241726d4c2e726f746174696f6e2c20746f72736f2e6368696c6472656e2e757070657241726d4c2e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c2e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c2e726f746174696f6e2c20746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c2e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e757070657241726d522e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e757070657241726d522e726f746174696f6e2c20746f72736f2e6368696c6472656e2e757070657241726d522e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d522e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d522e726f746174696f6e2c20746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d522e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e726f746174696f6e2c20746f72736f2e726f746174696f6e5461726765742c2064742c207370656564293b0a0a09746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e2c20746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e2c20746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c2e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e2c20746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e5461726765742c2064742c207370656564293b0a09746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e203d20736d6f6f7468416e676c6528746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e2c20746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c6567522e726f746174696f6e5461726765742c2064742c207370656564293b0a7d0a0a0a2f2f2d2d2d20436f6c6c6973696f6e0a0a2f2f2047657420776f726c6420656e7469747920706f6c79676f6e0a66756e6374696f6e20676574426f6e65576f726c64506f6c7928626f6e6529207b0a09636f6e737420636f73203d204d6174682e636f7328626f6e652e776f726c64526f74293b0a09636f6e73742073696e203d204d6174682e73696e28626f6e652e776f726c64526f74293b0a0a0972657475726e20626f6e652e706f6c792e6d61702870203d3e20287b0a0909783a20626f6e652e776f726c6458202b20702e78202a20636f73202d20702e79202a2073696e2c0a0909793a20626f6e652e776f726c6459202b20702e78202a2073696e202b20702e79202a20636f730a097d29293b0a7d0a0a66756e6374696f6e2067657448697428612c206229207b0a09636f6e73742070656e203d2073617428612c2062293b0a09696620282170656e207c7c2070656e2e6f7665726c6170203c20302e312972657475726e2066616c73653b0a0972657475726e2070656e3b0a7d0a2f2f2044657465726d696e65207468652074797065206f6620636f6c6c6973696f6e7320746f20646574656374202868616e6473202f20666565742920646570656e64696e67206f6e207468652061747461636b0a636f6e737420616374696f6e73203d207b0a0970756e63683a5b2270756e6368222c226869676850756e6368222c2277616c6b50756e6368222c2277616c6b4869676850756e6368222c2263726f75636850756e6368222c226a756d7050756e6368222c226a756d704c6f7750756e6368222c226a756d704869676850756e6368225d2c0a096b69636b3a5b226b69636b222c22686967684b69636b222c2263726f7563684b69636b222c226a756d704b69636b222c226a756d704c6f774b69636b222c226a756d70486967684b69636b225d0a7d3b0a636f6e737420616374696f6e54797065203d207b7d3b0a666f722028636f6e7374207479706520696e20616374696f6e7329207b0a09666f722028636f6e7374206e616d65206f6620616374696f6e735b747970655d29207b0a0909616374696f6e547970655b6e616d655d203d20747970653b2020202f2f202270756e636822206f7220226b69636b220a097d0a7d0a0a0a66756e6374696f6e20676574416374697665486974506f6c797328656e7469747929207b0a09636f6e73742074797065203d20616374696f6e547970655b656e746974792e616e696d2e73746174655d3b0a09696620282174797065292072657475726e206e756c6c3b0a0a096966202874797065203d3d3d202270756e63682229207b0a090972657475726e205b0a090909676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e757070657241726d4c2e6368696c6472656e2e6c6f77657241726d4c292c0a090909676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e757070657241726d522e6368696c6472656e2e6c6f77657241726d52290a09095d3b0a097d0a0a096966202874797065203d3d3d20226b69636b2229207b0a090972657475726e205b0a090909676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e75707065724c65674c2e6368696c6472656e2e6c6f7765724c65674c292c0a090909676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e75707065724c6567522e6368696c6472656e2e6c6f7765724c656752290a09095d3b0a097d0a0a0972657475726e206e756c6c3b0a7d0a0a66756e6374696f6e2067657448757274506f6c797328656e7469747929207b0a0972657475726e207b0a0909686561643a2020676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e68656164292c0a0909746f72736f3a20676574426f6e65576f726c64506f6c7928656e746974792e736b656c65746f6e2e746f72736f290a097d3b0a7d0a0a0a0a66756e6374696f6e207265736f6c766541747461636b2861747461636b65722c2074617267657429207b0a09636f6e737420686974506f6c7973203d20676574416374697665486974506f6c79732861747461636b6572293b0a096966202821686974506f6c7973292072657475726e3b0a0a09636f6e73742068757274203d2067657448757274506f6c797328746172676574293b0a0a09666f722028636f6e737420706f6c79206f6620686974506f6c797329207b0a0a0909636f6e73742068697448656164203d2067657448697428706f6c792c20687572742e68656164293b0a0909696620286869744865616429207b0a090909696628217461726765742e707265764869742973667848697428293b0a0909097461726765742e70726576486974203d20747275653b0a0909096170706c794869745265616374696f6e287461726765742c202268656164222c2068697448656164293b0a09090972657475726e3b202f2f20686561642074616b6573207072696f726974790a09097d0a0a0909636f6e737420686974546f72736f203d2067657448697428706f6c792c20687572742e746f72736f293b0a090969662028686974546f72736f29207b0a090909696628217461726765742e707265764869742973667848697428293b0a0909097461726765742e70726576486974203d20747275653b0a0909096170706c794869745265616374696f6e287461726765742c2022746f72736f222c20686974546f72736f293b0a09090972657475726e3b0a09097d0a097d0a7d0a0a0a66756e6374696f6e20706c61796572456e656d79436f6c6c6973696f6e2829207b0a09636f6e73742070203d2067616d652e706c617965723b0a092f2f204966206e6f2061747461636b206973206163746976652c20736b69702065766572797468696e670a202020200a0969662028697341747461636b416374697665287029297b0a0909666f722028636f6e73742065206f662067616d652e656e656d69657329207b0909090a0909097265736f6c766541747461636b28702c65293b0a09097d0a097d0a09666f722028636f6e73742065206f662067616d652e656e656d69657329207b0a09096966202821697341747461636b4163746976652865292920636f6e74696e75653b090a09097265736f6c766541747461636b28652c70293b0a097d0a7d0a0a2f2f53415420636f6c6c73696f6e20706f6c7920767320706f6c790a66756e6374696f6e2073617428706f6c79412c20706f6c794229207b0a096966202821706f6c7941207c7c20706f6c79412e6c656e677468203c2033292072657475726e206e756c6c3b0a096966202821706f6c7942207c7c20706f6c79422e6c656e677468203c2033292072657475726e206e756c6c3b0a0a096c6574206f7665726c6170203d20496e66696e6974793b0a096c657420736d616c6c65737441786973203d206e756c6c3b0a0a09666f722028636f6e737420706f6c79206f66205b706f6c79412c20706f6c79425d29207b0a0909666f7220286c65742069203d20303b2069203c20706f6c792e6c656e6774683b20692b2b29207b0a090909636f6e7374207031203d20706f6c795b695d3b0a090909636f6e7374207032203d20706f6c795b2869202b203129202520706f6c792e6c656e6774685d3b0a0a090909636f6e7374206478203d2070322e78202d2070312e783b0a090909636f6e7374206479203d2070322e79202d2070312e793b0a0a090909696620286478203d3d3d2030202626206479203d3d3d20302920636f6e74696e75653b0a0a090909636f6e7374206e78203d2064793b0a090909636f6e7374206e79203d202d64783b0a0a0909096c6574205b6d696e412c206d6178415d203d2070726f6a65637428706f6c79412c206e782c206e79293b0a0909096c6574205b6d696e422c206d6178425d203d2070726f6a65637428706f6c79422c206e782c206e79293b0a0a090909696620286d617841203c206d696e42207c7c206d617842203c206d696e41292072657475726e206e756c6c3b0a0a090909636f6e7374206f203d204d6174682e6d696e286d6178412c206d61784229202d204d6174682e6d6178286d696e412c206d696e42293b0a090909696620286f203c206f7665726c617029207b0a090909096f7665726c6170203d206f3b0a09090909736d616c6c65737441786973203d207b20783a206e782c20793a206e79207d3b0a0909097d0a09097d0a097d0a0a096966202821736d616c6c65737441786973292072657475726e206e756c6c3b0a0a09636f6e7374206c656e203d204d6174682e6879706f7428736d616c6c657374417869732e782c20736d616c6c657374417869732e79293b0a09696620286c656e203d3d3d2030292072657475726e206e756c6c3b0a0a0972657475726e207b0a09096f7665726c61702c0a09096e783a20736d616c6c657374417869732e78202f206c656e2c0a09096e793a20736d616c6c657374417869732e79202f206c656e0a097d3b0a7d0a0a66756e6374696f6e2070726f6a65637428706f6c792c206e782c206e7929207b0a096c6574206d696e203d20496e66696e6974792c206d6178203d202d496e66696e6974793b0a09666f722028636f6e73742070206f6620706f6c7929207b0a0909636f6e737420646f74203d20702e78202a206e78202b20702e79202a206e793b0a090969662028646f74203c206d696e29206d696e203d20646f743b0a090969662028646f74203e206d617829206d6178203d20646f743b0a097d0a0972657475726e205b6d696e2c206d61785d3b0a7d0a0a66756e6374696f6e20697341747461636b41637469766528656e7469747929207b0a09636f6e7374207374617465203d20656e746974792e616e696d2e73746174653b0a09636f6e7374206672616d65203d20656e746974792e616e696d2e6672616d653b0a0a09696620282161747461636b4672616d65735b73746174655d292072657475726e2066616c73653b0a0a09636f6e7374207b2073746172742c20656e64207d203d2061747461636b4672616d65735b73746174655d3b0a0972657475726e206672616d65203e3d207374617274202626206672616d65203c3d20656e643b0a7d0a0a0a66756e6374696f6e206170706c794869745265616374696f6e287461726765742c20686974547970652c20726573756c7429207b0a096966287461726765742e7479706520213d3d2022626f737322297b0a09097461726765742e7374756e203d202e323b0a09097461726765742e61747461636b436f6f6c646f776e203d20313b0a097d656c73657b0a09097461726765742e61747461636b436f6f6c646f776e203d202e323b0a097d0a0a096966202868697454797065203d3d3d2022686561642229207b0a09090a09096966287461726765742e696420213d3d2022706c61796572222967616d652e73636f7265202b3d204d6174682e6365696c28726573756c742e6f7665726c6170202a202e3135293b0a09097461726765742e686974506f696e747320202d3d204d6174682e6365696c28726573756c742e6f7665726c6170202a202e30373530293b0a09090a09097461726765742e7678203d202d28726573756c742e6e78202a202e33293b0a09097461726765742e7679203d202d28726573756c742e6e79202a202e35293b0a09097461726765742e736b656c65746f6e2e746f72736f2e6368696c6472656e2e686561642e726f746174696f6e202d3d20302e333b0a09097461726765742e686561645265636f696c203d20302e31353b0a09092f2f686174730a09096966287461726765742e686173486174297b0a090909737061776e48617428746172676574290a09097d0a097d0a0a096966202868697454797065203d3d3d2022746f72736f2229207b090a09097461726765742e7678203d202d28726573756c742e6e78202a202e33293b0a09097461726765742e7679203d202d28726573756c742e6e79202a202e35293b0a09097461726765742e736b656c65746f6e2e746f72736f2e726f746174696f6e202d3d20302e333b0a09097461726765742e736b656c65746f6e2e746f72736f2e6368696c6472656e2e75707065724c65674c2e726f746174696f6e202b3d20302e333b0a09097461726765742e736b656c65746f6e2e746f72736f2e6368696c6472656e2e75707065724c6567522e726f746174696f6e202b3d20302e333b0a09096966287461726765742e696420213d3d2022706c61796572222967616d652e73636f7265202b3d204d6174682e6365696c28726573756c742e6f7665726c6170202a202e31293b0a09097461726765742e686974506f696e7473202d3d204d6174682e6365696c28726573756c742e6f7665726c6170202a202e3035293b0a097d0a0a096966287461726765742e696420213d3d2022706c61796572222967616d652e73636f7265202b3d2031303b0a0a7d0a09090a66756e6374696f6e207570646174655265636f696c28656e746974792c20647429207b0a0969662028656e746974792e686561645265636f696c203e203029207b0a0909656e746974792e686561645265636f696c202d3d2064743b0a20202020202020202f2f20536d6f6f74686c792072657475726e20746f206e65757472616c20726f746174696f6e0a2020202020202020636f6e73742068656164203d20656e746974792e736b656c65746f6e2e746f72736f2e6368696c6472656e2e686561643b0a2020202020202020686561642e726f746174696f6e203d20686561642e726f746174696f6e202a20302e313b202f2f2064616d70656e20746f7761726420300a097d0a7d0a0a0a0a0a2a2f |
| dURL | 7570646174652e6a73 |
| descrHdr | 5570646174652066696c65 |
| dislikes | 0 |
| docType | 54454c412d4a532d31 |
| docVersion | 312e302e30 |
| fileCheckC | 3331333139373436373864643630306565613764363739313435383262616437313234656437376438396439646134333131376539383834343036643962 |
| fileCheckS | 376238343531396563636531306134636366353435646364633364383662366566303962633763366633323164313835393866663236353637376134346232 |
| hash | 64616231383835353931646661353365343965366236363236366566666236383563336365383532306633383732633734653833663566613438646366366464 |
| iconURLHdr | |
| likes | 0 |
| nameHdr | 7570646174652e6a73 |
| owner | 6465726f317179347966376335373777717a767a7134347833306c7967686135776a7a377772687736646e76356e337071346634643761716c75717133306d37616b |
| subDir |
Transaction Information
Root Hash
Built Height
7241620
Block
Timestamp
1782424348187
Timestamp (UTC)
2026-06-25 21:52:28
Block Age
1h 13m ago
Fee
0.26781
TX Size
19.026 kB
Version
1
Confirmations
240
Signature Type
DERO_HOMOMORPHIC
DERO Asset
2
Ring Size
0.26781
Fees
0.00000
Deposited
Sender
dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
Ring Members (2)
Smart Contract Details
SC Balance
0.00000 DERO
Smart Contract Code
Smart Contract Arguments
| Name | Type | Value |
|---|---|---|
| SC_ACTION | uint64 | 1 |
| SC_CODE | string | "// Copyright 2024. Civilware. All rights reserved. // TELA Decentralized Web Document (TELA-DOC-1) Function InitializePrivate() Uint64 10 IF init() == 0 THEN GOTO 30 20 RETURN 1 30 STORE("nameHdr", "update.js") 31 STORE("descrHdr", "Update file") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "update.js") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "") 36 STORE("fileCheckC", "3131974678dd600eea7d67914582bad7124ed77d89d9da43117e9884406d9b") 37 STORE("fileCheckS", "7b84519ecce10a4ccf545dcdc3d86b6ef09bc7c6f321d18598ff265677a44b2") 100 RETURN 0 End Function Function init() Uint64 10 IF EXISTS("owner") == 0 THEN GOTO 30 20 RETURN 1 30 STORE("owner", address()) 50 STORE("docVersion", "1.0.0") 60 STORE("hash", HEX(TXID())) 70 STORE("likes", 0) 80 STORE("dislikes", 0) 100 RETURN 0 End Function Function address() String 10 DIM s as String 20 LET s = SIGNER() 30 IF IS_ADDRESS_VALID(s) THEN GOTO 50 40 RETURN "anon" 50 RETURN ADDRESS_STRING(s) End Function Function Rate(r Uint64) Uint64 10 DIM addr as String 15 LET addr = address() 16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30 20 RETURN 1 30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT()) 40 IF r < 50 THEN GOTO 70 50 STORE("likes", LOAD("likes")+1) 60 RETURN 0 70 STORE("dislikes", LOAD("dislikes")+1) 100 RETURN 0 End Function /*window.addEventListener("load", resizeSVG); window.addEventListener("resize", resizeSVG); function resizeSVG() { sw = window.innerWidth; sh = window.innerHeight; updateViewBox(); } function updateViewBox() { if (keys["="]) zoom *= 0.98; if (keys["-"]) zoom *= 1.02; const viewW = sw * zoom; const viewH = sh * zoom; const camX = camCenter.x - viewW / 2; const camY = camCenter.y - viewH / 2; camLeft = camCenter.x - (sw * zoom) / 2; camTop = camCenter.y - (sh * zoom) / 2; camRight = camCenter.x + (sw * zoom) / 2; camBottom = camCenter.y + (sh * zoom) / 2; svg.setAttribute("viewBox", `${camX} ${camY} ${viewW} ${viewH}`); } function updateCamera(dt) { // camera follows player camCenter.x = game.player.x; camCenter.y = game.player.y; } //---------- // Get Input window.addEventListener("wheel", e => { if (e.deltaY < 0) zoom *= 0.9; // zoom in else zoom *= 1.1; // zoom out zoom = Math.max(0.2, Math.min(zoom, 5)); // clamp }); window.addEventListener("keydown", e => { keys[e.key] = true; }); window.addEventListener("keyup", e => { keys[e.key] = false; }); let prevStartPressed = false; function gatherInput(dt) { const p = game.player; // --- KEYBOARD --- let move = (keys["a"] ? -1 : 0) + (keys["d"] ? 1 : 0); let vert = (keys["w"] ? 1 : 0) + (keys["s"] ? -1 : 0); let wantPunch = keys["l"]; let wantKick = keys[";"]; let wantJump = keys[" "]; let startPressed = keys["Escape"] // --- GAMEPAD --- const gp = navigator.getGamepads()[0]; if (gp) { // D-pad if (gp.buttons[14].pressed) move = -1; // left if (gp.buttons[15].pressed) move = 1; // right if (gp.buttons[12].pressed) vert = 1; // up if (gp.buttons[13].pressed) vert = -1; // down // Face buttons if (gp.buttons[0].pressed) wantJump = true; // A = jump if (gp.buttons[2].pressed) wantPunch = true; // X = punch if (gp.buttons[1].pressed) wantKick = true; // B = kick startPressed = gp.buttons[9].pressed || startPressed; } // --- MENU --- menu(startPressed,move); prevStartPressed = startPressed; // --- APPLY TO PLAYER --- p.moveInput = move; p.verticalInput = vert; p.wantPunch = wantPunch; p.wantKick = wantKick; p.wantJump = wantJump; if (p.wantJump) jump(); } function jump(p = game.player) { if (p.onGround && p.anim.state !=="kick") { p.vy = -game.jumpStrength; p.onGround = false; p.inAir = true; } } function applyIntent(entity,dt) { const p = entity; if (p.stun > 0) { p.stun -= dt/1000; return; } if ((!p.inAir && p.wantKick)|| (!p.inAir && entity.verticalInput < 0)){ if (p.moveInput !== 0) { if(p.moveInput > 0 ){ p.facing = 1; }else{ p.facing = -1; } p.moveInput = 0; } } p.vx = p.moveInput * p.speed; if (p.moveInput !== 0) { if(p.moveInput > 0 ){ p.facing = 1; }else{ p.facing = -1; } } } function updateMovementState(entity) { if(entity.moveState === "dying")return; if (entity.inAir && entity.vy < -0.2) entity.moveState = "jump"; else if (entity.inAir && entity.vy > 0.2) entity.moveState = "fall"; else if (entity.moveInput !== 0) entity.moveState = "walk"; else if (entity.verticalInput < 0 && !entity.inAir) entity.moveState = "crouch"; else entity.moveState = "idle"; if (entity.moveState === "crouch") { entity.height = 60; entity.skeletonOffsetY = 12 } else { entity.height = 100; entity.skeletonOffsetY = 0; } } function updateActionState(entity) { entity.actionState = "none"; if (entity === game.player) { if (!entity.inAir) { if (entity.verticalInput < 0) { if (entity.wantPunch) return entity.actionState = "crouchPunch"; if (entity.wantKick) return entity.actionState = "crouchKick"; return entity.actionState = "crouch"; }else if(entity.verticalInput > 0){ if (entity.wantPunch) return entity.actionState = (entity.moveState === "walk") ? "walkHighPunch" : "highPunch"; if (entity.wantKick) return entity.actionState = "highKick"; }else{ if (entity.wantPunch)return entity.actionState = (entity.moveState === "walk") ? "walkPunch" : "punch"; if (entity.wantKick)return entity.actionState = "kick"; } } else { if (entity.verticalInput < 0) { if (entity.wantPunch) return entity.actionState = "jumpLowPunch"; if (entity.wantKick) return entity.actionState = "jumpLowKick"; }else if(entity.verticalInput > 0){ if (entity.wantPunch) return entity.actionState = "jumpHighPunch"; if (entity.wantKick) return entity.actionState = "jumpHighKick"; }else{ if (entity.wantPunch) return entity.actionState = "jumpPunch"; if (entity.wantKick) return entity.actionState = "jumpKick"; } } }else if(entity.type !== "boss" ){ if (entity.verticalInput == 1) { if (entity.wantPunch) {entity.actionState = "highPunch"} if (entity.wantKick) {entity.actionState = "highKick"} }else{ if (entity.wantPunch) {entity.actionState = "punch"} if (entity.wantKick) {entity.actionState = "kick"} } }else{ //boss if (entity.verticalInput == 1) { if (entity.wantPunch) {entity.actionState = (entity.moveState === "walk") ? "walkPunch" : "punch";} if (entity.wantKick) {entity.actionState = "highKick"} }else{ if (entity.wantPunch) {entity.actionState = (entity.moveState === "walk") ? "walkHighPunch" : "highPunch";} if (entity.wantKick) {entity.actionState = "kick"} } } } function selectAnimationState(entity) { let finalState = entity.moveState; if (entity.actionState !== "none") { finalState = entity.actionState; } if (finalState !== entity.anim.state) { playAnimation(entity, finalState); } } function playAnimation(entity, name) { const anim = entity.anim; if (anim.state === name) return; anim.state = name; anim.nextPose = poses[name]; } function updateAnimation(entity, dt) { const anim = entity.anim; anim.frame++ // If blending to a new pose if (anim.nextPose) { anim.currentPose = anim.nextPose; anim.nextPose = null; anim.frame = 0; } // Walk cycle override if (anim.state === "walk" || anim.state === "walkPunch" || anim.state === "walkHighPunch") { applyWalk(entity, dt); if (anim.state === "walkPunch") { applyBlendedPose(entity, poses.walkPunch, poses.walkPunch, 1); }else if (anim.state === "walkHighPunch") { applyBlendedPose(entity, poses.walkHighPunch, poses.walkHighPunch, 1); } } else if(anim.state !== "dying"){ // Idle, punch, kick, jump, fall, etc. applyBlendedPose(entity, anim.currentPose, anim.currentPose, 1); }else{ applyDeath(entity, dt); } } function applyWalk(entity,dt){ const t = performance.now() * .01; // walk speed multiplier const torso = entity.skeleton.torso; torso.rotationTarget = Math.sin(t * 0.5) * 0.05; // head torso.children.head.rotationTarget = 0; // legs torso.children.upperLegL.rotationTarget = Math.sin(t) * 0.6; torso.children.upperLegR.rotationTarget = -Math.sin(t) * 0.6; torso.children.upperLegL.children.lowerLegL.rotationTarget = Math.max(-Math.sin(t + 0.5) * 0.4, -0.1); torso.children.upperLegR.children.lowerLegR.rotationTarget = Math.max(Math.sin(t + 0.5) * 0.4, -0.1); // arms torso.children.upperArmL.rotationTarget = -Math.sin(t) * 0.4; torso.children.upperArmR.rotationTarget = Math.sin(t) * 0.4; torso.children.upperArmL.children.lowerArmL.rotationTarget = ( Math.sin(t + 0.3) * 0.1) -1; torso.children.upperArmR.children.lowerArmR.rotationTarget = ( Math.sin(t + 0.3) * 0.1) -.5; } function applyDeath(entity,dt){ const t = performance.now() * .01; // walk speed multiplier const torso = entity.skeleton.torso; const { segment: seg, platform: enemyPlatform } = getPlatformUnder(entity); const baseAngle = seg ? getSegmentAngle(seg) : 0; // fallback to flat torso.rotationTarget = entity.facing * (baseAngle - Math.PI / 2); // legs torso.children.upperLegL.rotationTarget = 0; torso.children.upperLegR.rotationTarget = 0; torso.children.upperLegL.children.lowerLegL.rotationTarget = 0; torso.children.upperLegR.children.lowerLegR.rotationTarget = 0; } function applyBlendedPose(entity, a, b, t) { const torso = entity.skeleton.torso; torso.children.upperArmL.rotationTarget = lerp(a.upperArmL, b.upperArmL, t); torso.children.upperArmL.children.lowerArmL.rotationTarget = lerp(a.lowerArmL, b.lowerArmL, t); torso.children.upperArmR.rotationTarget = lerp(a.upperArmR, b.upperArmR, t); torso.children.upperArmR.children.lowerArmR.rotationTarget = lerp(a.lowerArmR, b.lowerArmR, t); if(entity.anim.state !== "walkPunch" && entity.anim.state !== "walkHighPunch"){ torso.rotationTarget = lerp(a.torso, b.torso, t); torso.children.head.rotationTarget = lerp(a.head, b.head, t); torso.children.upperLegL.rotationTarget = lerp(a.upperLegL, b.upperLegL, t); torso.children.upperLegL.children.lowerLegL.rotationTarget = lerp(a.lowerLegL, b.lowerLegL, t); torso.children.upperLegR.rotationTarget = lerp(a.upperLegR, b.upperLegR, t); torso.children.upperLegR.children.lowerLegR.rotationTarget = lerp(a.lowerLegR, b.lowerLegR, t); } } function lerp(a, b, t) { return a + (b - a) * t; } function angleDiff( b,a) { let d = b - a; while (d > Math.PI) d -= Math.PI * 2; while (d < -Math.PI) d += Math.PI * 2; return d; } function smoothAngle(current, target, dt, baseSpeed) { let diff = target - current; // wrap into (-PI, PI) diff = (diff + Math.PI) % (Math.PI * 2) - Math.PI; const t = Math.min(Math.abs(diff) / Math.PI, 1); const ease = t * t; // quadratic ease-in const speed = baseSpeed + ease * 20; return current + diff * dt * speed; } function smoothBoneRotations(entity,dt) { const speed = 20; // how fast bones rotate toward targets dt=dt / 1000 // has to be in seconds const torso = entity.skeleton.torso; torso.children.head.rotation = smoothAngle(torso.children.head.rotation, torso.children.head.rotationTarget, dt, speed); torso.children.upperArmL.rotation = smoothAngle(torso.children.upperArmL.rotation, torso.children.upperArmL.rotationTarget, dt, speed); torso.children.upperArmL.children.lowerArmL.rotation = smoothAngle(torso.children.upperArmL.children.lowerArmL.rotation, torso.children.upperArmL.children.lowerArmL.rotationTarget, dt, speed); torso.children.upperArmR.rotation = smoothAngle(torso.children.upperArmR.rotation, torso.children.upperArmR.rotationTarget, dt, speed); torso.children.upperArmR.children.lowerArmR.rotation = smoothAngle(torso.children.upperArmR.children.lowerArmR.rotation, torso.children.upperArmR.children.lowerArmR.rotationTarget, dt, speed); torso.rotation = smoothAngle(torso.rotation, torso.rotationTarget, dt, speed); torso.children.upperLegL.rotation = smoothAngle(torso.children.upperLegL.rotation, torso.children.upperLegL.rotationTarget, dt, speed); torso.children.upperLegL.children.lowerLegL.rotation = smoothAngle(torso.children.upperLegL.children.lowerLegL.rotation, torso.children.upperLegL.children.lowerLegL.rotationTarget, dt, speed); torso.children.upperLegR.rotation = smoothAngle(torso.children.upperLegR.rotation, torso.children.upperLegR.rotationTarget, dt, speed); torso.children.upperLegR.children.lowerLegR.rotation = smoothAngle(torso.children.upperLegR.children.lowerLegR.rotation, torso.children.upperLegR.children.lowerLegR.rotationTarget, dt, speed); } //--- Collision // Get world entity polygon function getBoneWorldPoly(bone) { const cos = Math.cos(bone.worldRot); const sin = Math.sin(bone.worldRot); return bone.poly.map(p => ({ x: bone.worldX + p.x * cos - p.y * sin, y: bone.worldY + p.x * sin + p.y * cos })); } function getHit(a, b) { const pen = sat(a, b); if (!pen || pen.overlap < 0.1)return false; return pen; } // Determine the type of collisions to detect (hands / feet) depending on the attack const actions = { punch:["punch","highPunch","walkPunch","walkHighPunch","crouchPunch","jumpPunch","jumpLowPunch","jumpHighPunch"], kick:["kick","highKick","crouchKick","jumpKick","jumpLowKick","jumpHighKick"] }; const actionType = {}; for (const type in actions) { for (const name of actions[type]) { actionType[name] = type; // "punch" or "kick" } } function getActiveHitPolys(entity) { const type = actionType[entity.anim.state]; if (!type) return null; if (type === "punch") { return [ getBoneWorldPoly(entity.skeleton.torso.children.upperArmL.children.lowerArmL), getBoneWorldPoly(entity.skeleton.torso.children.upperArmR.children.lowerArmR) ]; } if (type === "kick") { return [ getBoneWorldPoly(entity.skeleton.torso.children.upperLegL.children.lowerLegL), getBoneWorldPoly(entity.skeleton.torso.children.upperLegR.children.lowerLegR) ]; } return null; } function getHurtPolys(entity) { return { head: getBoneWorldPoly(entity.skeleton.torso.children.head), torso: getBoneWorldPoly(entity.skeleton.torso) }; } function resolveAttack(attacker, target) { const hitPolys = getActiveHitPolys(attacker); if (!hitPolys) return; const hurt = getHurtPolys(target); for (const poly of hitPolys) { const hitHead = getHit(poly, hurt.head); if (hitHead) { if(!target.prevHit)sfxHit(); target.prevHit = true; applyHitReaction(target, "head", hitHead); return; // head takes priority } const hitTorso = getHit(poly, hurt.torso); if (hitTorso) { if(!target.prevHit)sfxHit(); target.prevHit = true; applyHitReaction(target, "torso", hitTorso); return; } } } function playerEnemyCollision() { const p = game.player; // If no attack is active, skip everything if (isAttackActive(p)){ for (const e of game.enemies) { resolveAttack(p,e); } } for (const e of game.enemies) { if (!isAttackActive(e)) continue; resolveAttack(e,p); } } //SAT collsion poly vs poly function sat(polyA, polyB) { if (!polyA || polyA.length < 3) return null; if (!polyB || polyB.length < 3) return null; let overlap = Infinity; let smallestAxis = null; for (const poly of [polyA, polyB]) { for (let i = 0; i < poly.length; i++) { const p1 = poly[i]; const p2 = poly[(i + 1) % poly.length]; const dx = p2.x - p1.x; const dy = p2.y - p1.y; if (dx === 0 && dy === 0) continue; const nx = dy; const ny = -dx; let [minA, maxA] = project(polyA, nx, ny); let [minB, maxB] = project(polyB, nx, ny); if (maxA < minB || maxB < minA) return null; const o = Math.min(maxA, maxB) - Math.max(minA, minB); if (o < overlap) { overlap = o; smallestAxis = { x: nx, y: ny }; } } } if (!smallestAxis) return null; const len = Math.hypot(smallestAxis.x, smallestAxis.y); if (len === 0) return null; return { overlap, nx: smallestAxis.x / len, ny: smallestAxis.y / len }; } function project(poly, nx, ny) { let min = Infinity, max = -Infinity; for (const p of poly) { const dot = p.x * nx + p.y * ny; if (dot < min) min = dot; if (dot > max) max = dot; } return [min, max]; } function isAttackActive(entity) { const state = entity.anim.state; const frame = entity.anim.frame; if (!attackFrames[state]) return false; const { start, end } = attackFrames[state]; return frame >= start && frame <= end; } function applyHitReaction(target, hitType, result) { if(target.type !== "boss"){ target.stun = .2; target.attackCooldown = 1; }else{ target.attackCooldown = .2; } if (hitType === "head") { if(target.id !== "player")game.score += Math.ceil(result.overlap * .15); target.hitPoints -= Math.ceil(result.overlap * .0750); target.vx = -(result.nx * .3); target.vy = -(result.ny * .5); target.skeleton.torso.children.head.rotation -= 0.3; target.headRecoil = 0.15; //hats if(target.hasHat){ spawnHat(target) } } if (hitType === "torso") { target.vx = -(result.nx * .3); target.vy = -(result.ny * .5); target.skeleton.torso.rotation -= 0.3; target.skeleton.torso.children.upperLegL.rotation += 0.3; target.skeleton.torso.children.upperLegR.rotation += 0.3; if(target.id !== "player")game.score += Math.ceil(result.overlap * .1); target.hitPoints -= Math.ceil(result.overlap * .05); } if(target.id !== "player")game.score += 10; } function updateRecoil(entity, dt) { if (entity.headRecoil > 0) { entity.headRecoil -= dt; // Smoothly return to neutral rotation const head = entity.skeleton.torso.children.head; head.rotation = head.rotation * 0.1; // dampen toward 0 } } */" |
Prove Transaction
Prove that you sent DERO in this transaction. Obtain proof using the dero-wallet-cli command or from your wallet statement.
Note: The proof is sent to the server for verification calculations.
Payload proofs are user-provided display proofs; for the strongest verification, confirm with the receiving wallet.