Transaction Details
SMART CONTRACT
Transaction Hash
f579697727f541c567aee994b4651cbdcd94e6c7196b0b31d076f89356fdf7f9
Block Status
Smart Contract State
SCID Reserves
| SCID | Amount (Atomic Units) |
|---|---|
| 0000000000000000000000000000000000000000000000000000000000000000 | 0 |
String Variables
| Key | Value |
|---|---|
| C | 2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20227570646174652e6a7322290a33312053544f524528226465736372486472222c2022557064617465204a532066696c6522290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20227570646174652e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c20223166353833623435306531316230663233323438623632303662363136326539346330333935623530336534323639656336646336306239353939666339326622290a33372053544f5245282266696c65436865636b53222c20223231303230353437343635336665376161663632623364613538386264653931656161323534316563366539313464333935643434643162346136373164653522290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a2f2f2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a2f2f2055706461746520456e7469746965730a0a66756e6374696f6e2075706461746528647429207b090a0975706461746543616d65726128293b0a0975706461746556696577426f7828293b09090a09757064617465537061776e54696d6572286474293b0a09757064617465456e656d696573286474293b0a0975706461746550726f6a656374696c6573286474293b090a7d0a0a0a0a66756e6374696f6e20726573697a655356472829207b0a097377203d2077696e646f772e696e6e657257696474683b0a097368203d2077696e646f772e696e6e65724865696768743b0a0975706461746556696577426f7828293b0a7d0a0a66756e6374696f6e2075706461746556696577426f782829207b0a0a09696620286b6579735b223d225d29207a6f6f6d202a3d20302e39383b0a09696620286b6579735b222d225d29207a6f6f6d202a3d20312e30323b0a0a0a09636f6e7374207669657757203d207377202a207a6f6f6d3b0a09636f6e7374207669657748203d207368202a207a6f6f6d3b0a0a09636f6e73742063616d58203d2063616d43656e7465722e78202d207669657757202f20323b0a09636f6e73742063616d59203d2063616d43656e7465722e79202d207669657748202f20323b0a0a0963616d4c6566742020203d2063616d43656e7465722e78202d20287377202a207a6f6f6d29202f20323b0a0963616d546f70202020203d2063616d43656e7465722e79202d20287368202a207a6f6f6d29202f20323b0a0963616d526967687420203d2063616d43656e7465722e78202b20287377202a207a6f6f6d29202f20323b0a0963616d426f74746f6d203d2063616d43656e7465722e79202b20287368202a207a6f6f6d29202f20323b0a0a097376672e736574417474726962757465282276696577426f78222c2060247b63616d587d20247b63616d597d20247b76696577577d20247b76696577487d60293b0a7d0a0a0a2f2f2054696d65720a6c657420656e656d79537061776e54696d6572203d20313030303b2f2f31207365636f6e640a66756e6374696f6e20757064617465537061776e54696d657228647429207b0a09656e656d79537061776e54696d6572202d3d2064743b0a0969662028656e656d79537061776e54696d6572203c3d203029207b0a0909666f722028636f6e73742062617365206f662067616d652e626173657329207b0a09090969662028626173652e636f6f6c646f776e203e203029207b0a09090909626173652e636f6f6c646f776e202d3d2064743b0a09090909636f6e74696e75653b0a0909097d0a0a090909636f6e737420636f756e74203d2067616d652e656e656d6965732e66696c7465722865203d3e20652e62617365203d3d3d2062617365292e6c656e6774683b0a0a09090969662028636f756e74203c20626173652e6d6178456e656d69657329207b0a09090909737061776e456e656d7946726f6d426173652862617365293b0a09090909626173652e636f6f6c646f776e203d20626173652e737061776e496e74657276616c3b0a0909097d0a09097d0a0909656e656d79537061776e54696d6572203d20323030303b0a097d0a7d0a0a66756e6374696f6e2075706461746543616d65726128647429207b0a092f2f2063616d65726120666f6c6c6f777320706c617965720a0963616d43656e7465722e78203d2067616d652e706c617965722e783b0a0963616d43656e7465722e79203d2067616d652e706c617965722e793b0a7d0a66756e6374696f6e2075706461746550726f6a656374696c657328647429207b090a092f2f2068616e646c652070726f6a656374696c65730a09666f7220286c65742070206f662067616d652e70726f6a656374696c657329207b0a0909702e78202b3d204d6174682e636f7328702e616e676c6529202a20702e7370656564202a2064743b0a0909702e79202b3d204d6174682e73696e28702e616e676c6529202a20702e7370656564202a2064743b0a0909702e6c696665202d3d2064743b202020202020200a097d0a7d0a0a66756e6374696f6e207570646174655061727469636c657328647429207b0a09666f7220286c65742070206f662067616d652e7061727469636c657329207b0a0909702e78202b3d20702e7678202a2064743b0a0909702e79202b3d20702e7679202a2064743b0a0909702e6c696665202d3d2064743b0a097d0a7d0a0a66756e6374696f6e20656e656d7943616e53686f6f74286529207b0a09636f6e7374206478203d2067616d652e706c617965722e78202d20652e783b0a09636f6e7374206479203d2067616d652e706c617965722e79202d20652e793b0a09636f6e73742064697374203d204d6174682e6879706f742864782c206479293b0a0a096966202864697374203e20383030292072657475726e2066616c73653b202f2f206d61782072616e67650a0969662028652e66697265436f6f6c646f776e203e2030292072657475726e2066616c73653b0a0a092f2f206f7074696f6e616c3a20636865636b20696620656e656d7920697320726f7567686c7920666163696e672074686520706c617965720a09636f6e737420616e676c65546f506c61796572203d204d6174682e6174616e322864792c206478293b0a09636f6e73742064696666203d204d6174682e616273284d6174682e6174616e32284d6174682e73696e28616e676c65546f506c61796572202d20652e616e676c65292c204d6174682e636f7328616e676c65546f506c61796572202d20652e616e676c652929293b0a096966202864696666203e20302e36292072657475726e2066616c73653b202f2f206e6f7420666163696e6720706c6179657220656e6f7567680a0a0972657475726e20747275653b0a7d0a66756e6374696f6e2067657450726564696374656441696d286529207b0a09636f6e7374207078203d2067616d652e706c617965722e783b0a09636f6e7374207079203d2067616d652e706c617965722e793b0a09636f6e737420707678203d204d6174682e636f732867616d652e706c617965722e616e676c6529202a2067616d652e706c617965722e73706565643b0a09636f6e737420707679203d204d6174682e73696e2867616d652e706c617965722e616e676c6529202a2067616d652e706c617965722e73706565643b0a0a09636f6e7374206578203d20652e783b0a09636f6e7374206579203d20652e793b0a0a09636f6e73742062756c6c65745370656564203d203930303b200a0a09636f6e7374206478203d207078202d2065783b0a09636f6e7374206479203d207079202d2065793b0a0a09636f6e73742064697374203d204d6174682e6879706f742864782c206479293b0a09636f6e73742074203d2064697374202f2062756c6c657453706565643b0a0a09636f6e73742070726564696374656458203d207078202b20707678202a20743b0a09636f6e73742070726564696374656459203d207079202b20707679202a20743b0a0a0972657475726e204d6174682e6174616e322870726564696374656459202d2065792c2070726564696374656458202d206578293b0a7d0a0a0a66756e6374696f6e2067657441766f6964616e6365416e676c65286529207b0a09636f6e7374206c6f6f6b44697374203d2033303b0a0a09636f6e73742072617973203d205b0a0909652e616e676c652c20202020202020202f2f2063656e7465720a0909652e616e676c65202b20302e342c20202f2f206c6566740a0909652e616e676c65202d20302e342020202f2f2072696768740a095d3b0a0a096c65742064616e6765724c656674203d2066616c73653b0a096c65742064616e67657243656e746572203d2066616c73653b0a096c65742064616e6765725269676874203d2066616c73653b0a0a09666f7220286c65742069203d20303b2069203c20726179732e6c656e6774683b20692b2b29207b0a0909636f6e737420616e67203d20726179735b695d3b0a0909636f6e7374206c78203d20652e78202b204d6174682e636f7328616e6729202a206c6f6f6b446973743b0a0909636f6e7374206c79203d20652e79202b204d6174682e73696e28616e6729202a206c6f6f6b446973743b0a0a0909666f722028636f6e7374206f626a206f6620776f726c644f626a6563747329207b0a09090969662028706f696e74496e506f6c79286c782c206c792c206f626a2e706f6c792c206f626a2e782c206f626a2e792929207b0a090909096966202869203d3d3d2030292064616e67657243656e746572203d20747275653b0a090909096966202869203d3d3d2031292064616e6765724c656674203d20747275653b0a090909096966202869203d3d3d2032292064616e6765725269676874203d20747275653b0a0909097d0a09097d0a097d0a0a092f2f2052657475726e20616e20616e676c65206f666673657420746f206170706c7920746f2064657369726564416e676c650a096966202864616e67657243656e74657229207b0a0909636f6e73742073696465203d20652e61766f6964446972203f3f20284d6174682e72616e646f6d2829203c20302e35203f2031203a202d31293b0a0909652e61766f6964446972203d20736964653b0a090972657475726e2073696465202a20302e383b0a097d0a096966202864616e6765724c656674292072657475726e202d302e343b0a096966202864616e6765725269676874292072657475726e202b302e343b0a0a0972657475726e20303b202f2f206e6f2061766f6964616e6365206e65656465640a7d0a0a0a66756e6374696f6e20757064617465456e656d69657328647429207b0a09666f7220286c65742065206f662067616d652e656e656d69657329207b0a09097377697463682028652e7479706529207b0a090909636173652022636861736572223a202075706461746543686173657228652c206474293b20627265616b3b0a09090963617365202273747261666572223a207570646174655374726166657228652c206474293b20627265616b3b0a09090963617365202274616e6b223a2020202075706461746554616e6b28652c206474293b20627265616b3b0a09097d0a097d202020200a7d0a0a66756e6374696f6e2075706461746543686173657228652c20647429207b0a09090a092f2f20312e204348415345204c4f4749430a09636f6e7374206478203d2067616d652e706c617965722e78202d20652e783b0a09636f6e7374206479203d2067616d652e706c617965722e79202d20652e793b0a096c65742064657369726564416e676c65203d204d6174682e6174616e322864792c206478293b0a0a092f2f20322e2041564f4944414e4345204c4f4749430a0964657369726564416e676c65202b3d2067657441766f6964616e6365416e676c652865293b0a0a092f2f20536d6f6f7468207374656572696e6720746f776172642064657369726564416e676c650a096c65742064696666203d2064657369726564416e676c65202d20652e616e676c653b0a0964696666203d204d6174682e6174616e32284d6174682e73696e2864696666292c204d6174682e636f73286469666629293b0a09652e616e676c65202b3d2064696666202a20302e31353b0a0a092f2f20342e204d4f56450a09652e78202b3d204d6174682e636f7328652e616e676c6529202a20652e7370656564202a2064743b0a09652e79202b3d204d6174682e73696e28652e616e676c6529202a20652e7370656564202a2064743b0a0a0a092f2f20466972696e670a09652e66697265436f6f6c646f776e202d3d2064743b0a092f2f206166746572206d6f76656d656e740a0969662028656e656d7943616e53686f6f7428652929207b0a0909636f6e73742061696d416e676c65203d2067657450726564696374656441696d2865293b0a09090a0909737061776e456e656d7942756c6c657428652e782c20652e792c2061696d416e676c65293b0a0909652e66697265436f6f6c646f776e203d20652e66697265526174653b0a097d0a0a7d0a0a0a66756e6374696f6e207570646174655374726166657228652c20647429207b0a09636f6e7374206478203d2067616d652e706c617965722e78202d20652e783b0a09636f6e7374206479203d2067616d652e706c617965722e79202d20652e793b0a09636f6e73742064697374203d204d6174682e6879706f742864782c206479293b0a0a09636f6e737420616e676c65546f506c61796572203d204d6174682e6174616e322864792c206478293b0a096c65742064657369726564416e676c65203d20616e676c65546f506c617965723b0a0a092f2f204d61696e7461696e2064697374616e63650a09636f6e737420696465616c203d203236303b0a096966202864697374203c20696465616c202d203230292064657369726564416e676c65202b3d204d6174682e50493b202f2f206261636b2075700a09656c7365206966202864697374203e20696465616c202b203230292064657369726564416e676c65203d20616e676c65546f506c617965723b202f2f206d6f766520696e0a0a092f2f20416464207374726166696e670a09636f6e737420737472616665203d20652e636c6f636b77697365203f204d6174682e50492f32203a202d4d6174682e50492f323b0a0964657369726564416e676c65202b3d207374726166653b0a0a092f2f204164642061766f6964616e63650a0964657369726564416e676c65202b3d2067657441766f6964616e6365416e676c652865293b0a0a092f2f20536d6f6f7468207374656572696e670a096c65742064696666203d2064657369726564416e676c65202d20652e616e676c653b0a0964696666203d204d6174682e6174616e32284d6174682e73696e2864696666292c204d6174682e636f73286469666629293b0a09652e616e676c65202b3d2064696666202a20302e31353b0a0a092f2f204d6f76650a09652e78202b3d204d6174682e636f7328652e616e676c6529202a20652e7370656564202a2064743b0a09652e79202b3d204d6174682e73696e28652e616e676c6529202a20652e7370656564202a2064743b0a0a092f2f2053686f6f74696e670a09652e66697265436f6f6c646f776e202d3d2064743b0a0969662028656e656d7943616e53686f6f7428652929207b0a0909636f6e73742061696d416e676c65203d2067657450726564696374656441696d2865293b0a0909737061776e456e656d7942756c6c657428652e782c20652e792c2061696d416e676c65293b0a0909652e66697265436f6f6c646f776e203d20652e66697265526174653b0a097d0a7d0a0a66756e6374696f6e2075706461746554616e6b28652c20647429207b0a0a092f2f202d2d2d20312e2048554c4c204d4f56454d454e540a0a09636f6e7374206478203d2067616d652e706c617965722e78202d20652e783b0a09636f6e7374206479203d2067616d652e706c617965722e79202d20652e793b0a09636f6e737420616e676c65546f506c61796572203d204d6174682e6174616e322864792c206478293b0a0a092f2f204164642061766f6964616e63650a096c6574206465736972656448756c6c416e676c65203d20616e676c65546f506c61796572202b2067657441766f6964616e6365416e676c652865293b0a0a092f2f20536d6f6f74682068756c6c207374656572696e670a096c6574206469666648756c6c203d206465736972656448756c6c416e676c65202d20652e616e676c653b0a096469666648756c6c203d204d6174682e6174616e32284d6174682e73696e286469666648756c6c292c204d6174682e636f73286469666648756c6c29293b0a09652e616e676c65202b3d206469666648756c6c202a20652e68756c6c5475726e53706565643b0a0a092f2f204d61696e7461696e20696465616c2072616e67650a09636f6e73742064697374203d204d6174682e6879706f742864782c206479293b0a096966202864697374203e20652e696465616c52616e6765202b203430207c7c20652e7265706f736974696f6e696e6729207b0a09092f2f206d6f766520636c6f7365720a0909652e78202b3d204d6174682e636f7328652e616e676c6529202a20652e7370656564202a2064743b0a0909652e79202b3d204d6174682e73696e28652e616e676c6529202a20652e7370656564202a2064743b0a097d20656c7365206966202864697374203c20652e696465616c52616e6765202d20343029207b0a09092f2f206261636b2075700a0909652e78202d3d204d6174682e636f7328652e616e676c6529202a20652e7370656564202a2064743b0a0909652e79202d3d204d6174682e73696e28652e616e676c6529202a20652e7370656564202a2064743b0a097d0a0a0a092f2f202d2d2d20322e2054555252455420524f544154494f4e0a0a096966202821652e7475727265742e616e676c652920652e7475727265742e616e676c65203d20652e616e676c653b202f2f20696e69740a0a096c65742064657369726564547572726574416e676c65203d20616e676c65546f506c617965723b0a0a096c65742064696666547572726574203d2064657369726564547572726574416e676c65202d20652e7475727265742e616e676c653b0a0964696666547572726574203d204d6174682e6174616e32284d6174682e73696e2864696666547572726574292c204d6174682e636f73286469666654757272657429293b0a0a09652e7475727265742e616e676c65202b3d2064696666547572726574202a20652e7475727265742e7475726e53706565643b0a0a0a092f2f202d2d2d20332e204649524520434f4e54524f4c0a0a09652e66697265436f6f6c646f776e202d3d2064743b0a0a09636f6e737420747572726574416c69676e6564203d204d6174682e616273286469666654757272657429203c20302e313b0a09636f6e737420636c65617253686f74203d2021726179486974734f626a65637428652e782c20652e792c20652e7475727265742e616e676c65293b0a09636f6e737420696e52616e6765203d2064697374203c20652e696465616c52616e6765202b203130303b0a0a0969662028636c65617253686f7420262620696e52616e6765297b0a0909652e7265706f736974696f6e696e67203d2066616c73653b0a090969662028747572726574416c69676e656420262620652e66697265436f6f6c646f776e203c3d20302029207b0a090909737061776e426967456e656d7942756c6c657428652e782c20652e792c20652e7475727265742e616e676c65293b0a090909652e66697265436f6f6c646f776e203d20652e66697265526174653b0a09097d0a097d20656c7365206966202821636c65617253686f74297b09090a0909652e7265706f736974696f6e696e67203d20747275653b0a097d0a7d0a0a0a66756e6374696f6e20726179486974734f626a65637428782c20792c20616e676c652c206d617844697374203d203230303029207b0a09636f6e737420656e6458203d2078202b204d6174682e636f7328616e676c6529202a206d6178446973743b0a09636f6e737420656e6459203d2079202b204d6174682e73696e28616e676c6529202a206d6178446973743b0a0a09666f722028636f6e7374206f626a206f6620776f726c644f626a6563747329207b0a0909636f6e737420706f6c79203d20676574576f726c64506f6c79286f626a293b0a0a0909666f7220286c65742069203d20303b2069203c20706f6c792e6c656e6774683b20692b2b29207b0a090909636f6e73742061203d20706f6c795b695d3b0a090909636f6e73742062203d20706f6c795b2869202b203129202520706f6c792e6c656e6774685d3b0a0a090909696620287365676d656e7473496e7465727365637428782c20792c20656e64582c20656e64592c20612e782c20612e792c20622e782c20622e792929207b0a0909090972657475726e20747275653b202f2f20626c6f636b65640a0909097d0a09097d0a097d0a0a0972657475726e2066616c73653b202f2f20636c6561722073686f740a7d0a0a66756e6374696f6e207365676d656e7473496e746572736563742878312c79312c2078322c79322c2078332c79332c2078342c793429207b0a0966756e6374696f6e206363772861782c61792c2062782c62792c2063782c637929207b0a090972657475726e20286379202d20617929202a20286278202d20617829203e20286279202d20617929202a20286378202d206178293b0a097d0a0972657475726e20280a09096363772878312c79312c2078332c79332c2078342c79342920213d3d206363772878322c79322c2078332c79332c2078342c7934292026260a09096363772878312c79312c2078322c79322c2078332c79332920213d3d206363772878312c79312c2078322c79322c2078342c7934290a09293b0a7d0a2a2f |
| dURL | 7570646174652e6a73 |
| descrHdr | 557064617465204a532066696c65 |
| dislikes | 0 |
| docType | 54454c412d4a532d31 |
| docVersion | 312e302e30 |
| fileCheckC | 31663538336234353065313162306632333234386236323036623631363265393463303339356235303365343236396563366463363062393539396663393266 |
| fileCheckS | 32313032303534373436353366653761616636326233646135383862646539316561613235343165633665393134643339356434346431623461363731646535 |
| hash | 66353739363937373237663534316335363761656539393462343635316362646364393465366337313936623062333164303736663839333536666466376639 |
| iconURLHdr | |
| likes | 0 |
| nameHdr | 7570646174652e6a73 |
| owner | 6465726f317179347966376335373777717a767a7134347833306c7967686135776a7a377772687736646e76356e337071346634643761716c75717133306d37616b |
| subDir |
Transaction Information
Root Hash
Built Height
7138355
Block
Timestamp
1780511416352
Timestamp (UTC)
2026-06-03 18:30:16
Block Age
4h 15m ago
Fee
0.13627
TX Size
10.461 kB
Version
1
Confirmations
834
Signature Type
DERO_HOMOMORPHIC
DERO Asset
2
Ring Size
0.13627
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 JS file") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "update.js") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "") 36 STORE("fileCheckC", "1f583b450e11b0f23248b6206b6162e94c0395b503e4269ec6dc60b9599fc92f") 37 STORE("fileCheckS", "210205474653fe7aaf62b3da588bde91eaa2541ec6e914d395d44d1b4a671de5") 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 /*//---------------- // Update Entities function update(dt) { updateCamera(); updateViewBox(); updateSpawnTimer(dt); updateEnemies(dt); updateProjectiles(dt); } 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}`); } // Timer let enemySpawnTimer = 1000;//1 second function updateSpawnTimer(dt) { enemySpawnTimer -= dt; if (enemySpawnTimer <= 0) { for (const base of game.bases) { if (base.cooldown > 0) { base.cooldown -= dt; continue; } const count = game.enemies.filter(e => e.base === base).length; if (count < base.maxEnemies) { spawnEnemyFromBase(base); base.cooldown = base.spawnInterval; } } enemySpawnTimer = 2000; } } function updateCamera(dt) { // camera follows player camCenter.x = game.player.x; camCenter.y = game.player.y; } function updateProjectiles(dt) { // handle projectiles for (let p of game.projectiles) { p.x += Math.cos(p.angle) * p.speed * dt; p.y += Math.sin(p.angle) * p.speed * dt; p.life -= dt; } } function updateParticles(dt) { for (let p of game.particles) { p.x += p.vx * dt; p.y += p.vy * dt; p.life -= dt; } } function enemyCanShoot(e) { const dx = game.player.x - e.x; const dy = game.player.y - e.y; const dist = Math.hypot(dx, dy); if (dist > 800) return false; // max range if (e.fireCooldown > 0) return false; // optional: check if enemy is roughly facing the player const angleToPlayer = Math.atan2(dy, dx); const diff = Math.abs(Math.atan2(Math.sin(angleToPlayer - e.angle), Math.cos(angleToPlayer - e.angle))); if (diff > 0.6) return false; // not facing player enough return true; } function getPredictedAim(e) { const px = game.player.x; const py = game.player.y; const pvx = Math.cos(game.player.angle) * game.player.speed; const pvy = Math.sin(game.player.angle) * game.player.speed; const ex = e.x; const ey = e.y; const bulletSpeed = 900; const dx = px - ex; const dy = py - ey; const dist = Math.hypot(dx, dy); const t = dist / bulletSpeed; const predictedX = px + pvx * t; const predictedY = py + pvy * t; return Math.atan2(predictedY - ey, predictedX - ex); } function getAvoidanceAngle(e) { const lookDist = 30; const rays = [ e.angle, // center e.angle + 0.4, // left e.angle - 0.4 // right ]; let dangerLeft = false; let dangerCenter = false; let dangerRight = false; for (let i = 0; i < rays.length; i++) { const ang = rays[i]; const lx = e.x + Math.cos(ang) * lookDist; const ly = e.y + Math.sin(ang) * lookDist; for (const obj of worldObjects) { if (pointInPoly(lx, ly, obj.poly, obj.x, obj.y)) { if (i === 0) dangerCenter = true; if (i === 1) dangerLeft = true; if (i === 2) dangerRight = true; } } } // Return an angle offset to apply to desiredAngle if (dangerCenter) { const side = e.avoidDir ?? (Math.random() < 0.5 ? 1 : -1); e.avoidDir = side; return side * 0.8; } if (dangerLeft) return -0.4; if (dangerRight) return +0.4; return 0; // no avoidance needed } function updateEnemies(dt) { for (let e of game.enemies) { switch (e.type) { case "chaser": updateChaser(e, dt); break; case "strafer": updateStrafer(e, dt); break; case "tank": updateTank(e, dt); break; } } } function updateChaser(e, dt) { // 1. CHASE LOGIC const dx = game.player.x - e.x; const dy = game.player.y - e.y; let desiredAngle = Math.atan2(dy, dx); // 2. AVOIDANCE LOGIC desiredAngle += getAvoidanceAngle(e); // Smooth steering toward desiredAngle let diff = desiredAngle - e.angle; diff = Math.atan2(Math.sin(diff), Math.cos(diff)); e.angle += diff * 0.15; // 4. MOVE e.x += Math.cos(e.angle) * e.speed * dt; e.y += Math.sin(e.angle) * e.speed * dt; // Firing e.fireCooldown -= dt; // after movement if (enemyCanShoot(e)) { const aimAngle = getPredictedAim(e); spawnEnemyBullet(e.x, e.y, aimAngle); e.fireCooldown = e.fireRate; } } function updateStrafer(e, dt) { const dx = game.player.x - e.x; const dy = game.player.y - e.y; const dist = Math.hypot(dx, dy); const angleToPlayer = Math.atan2(dy, dx); let desiredAngle = angleToPlayer; // Maintain distance const ideal = 260; if (dist < ideal - 20) desiredAngle += Math.PI; // back up else if (dist > ideal + 20) desiredAngle = angleToPlayer; // move in // Add strafing const strafe = e.clockwise ? Math.PI/2 : -Math.PI/2; desiredAngle += strafe; // Add avoidance desiredAngle += getAvoidanceAngle(e); // Smooth steering let diff = desiredAngle - e.angle; diff = Math.atan2(Math.sin(diff), Math.cos(diff)); e.angle += diff * 0.15; // Move e.x += Math.cos(e.angle) * e.speed * dt; e.y += Math.sin(e.angle) * e.speed * dt; // Shooting e.fireCooldown -= dt; if (enemyCanShoot(e)) { const aimAngle = getPredictedAim(e); spawnEnemyBullet(e.x, e.y, aimAngle); e.fireCooldown = e.fireRate; } } function updateTank(e, dt) { // --- 1. HULL MOVEMENT const dx = game.player.x - e.x; const dy = game.player.y - e.y; const angleToPlayer = Math.atan2(dy, dx); // Add avoidance let desiredHullAngle = angleToPlayer + getAvoidanceAngle(e); // Smooth hull steering let diffHull = desiredHullAngle - e.angle; diffHull = Math.atan2(Math.sin(diffHull), Math.cos(diffHull)); e.angle += diffHull * e.hullTurnSpeed; // Maintain ideal range const dist = Math.hypot(dx, dy); if (dist > e.idealRange + 40 || e.repositioning) { // move closer e.x += Math.cos(e.angle) * e.speed * dt; e.y += Math.sin(e.angle) * e.speed * dt; } else if (dist < e.idealRange - 40) { // back up e.x -= Math.cos(e.angle) * e.speed * dt; e.y -= Math.sin(e.angle) * e.speed * dt; } // --- 2. TURRET ROTATION if (!e.turret.angle) e.turret.angle = e.angle; // init let desiredTurretAngle = angleToPlayer; let diffTurret = desiredTurretAngle - e.turret.angle; diffTurret = Math.atan2(Math.sin(diffTurret), Math.cos(diffTurret)); e.turret.angle += diffTurret * e.turret.turnSpeed; // --- 3. FIRE CONTROL e.fireCooldown -= dt; const turretAligned = Math.abs(diffTurret) < 0.1; const clearShot = !rayHitsObject(e.x, e.y, e.turret.angle); const inRange = dist < e.idealRange + 100; if (clearShot && inRange){ e.repositioning = false; if (turretAligned && e.fireCooldown <= 0 ) { spawnBigEnemyBullet(e.x, e.y, e.turret.angle); e.fireCooldown = e.fireRate; } } else if (!clearShot){ e.repositioning = true; } } function rayHitsObject(x, y, angle, maxDist = 2000) { const endX = x + Math.cos(angle) * maxDist; const endY = y + Math.sin(angle) * maxDist; for (const obj of worldObjects) { const poly = getWorldPoly(obj); for (let i = 0; i < poly.length; i++) { const a = poly[i]; const b = poly[(i + 1) % poly.length]; if (segmentsIntersect(x, y, endX, endY, a.x, a.y, b.x, b.y)) { return true; // blocked } } } return false; // clear shot } function segmentsIntersect(x1,y1, x2,y2, x3,y3, x4,y4) { function ccw(ax,ay, bx,by, cx,cy) { return (cy - ay) * (bx - ax) > (by - ay) * (cx - ax); } return ( ccw(x1,y1, x3,y3, x4,y4) !== ccw(x2,y2, x3,y3, x4,y4) && ccw(x1,y1, x2,y2, x3,y3) !== ccw(x1,y1, x2,y2, x4,y4) ); } */" |
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.