logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: bc22357ec9e84437c6db6c6b870db20e66f2e8c5561142b1969bcd8df47357d0 Type SC

Block: cd705d275287f73744494dc378c3e8ba56affe987fe7a2ab0fba95ae01bb5f1e (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 50
SCID string variables
key value
C 2f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a
authorizationConsensus 2
error 6661696c6564206174207369676e436865636b73204c3335
numberOfOwners 3
owner1 011c2014c9c9bff527c48b9d0ce4fe00ab783c11776f5cbf3da3c6cea3357bff00
owner2 15221492951ee5310dca6f084fd1381bc3a5aba1e73decff5fac6d6e1dc91f3500
owner3 1800b52b91c7a7be86829e39a7fdb6ddda05a641598909b8e11c052cf0b02ec701
txCount 0
SCID uint64 variables
key value
built BLID : 949da837da3c6c6feacc8ceb9df78b337858d330118f2998c66b56dc8df40e2b
Tx RootHash: 005ecaacac5660455033dab99e9fd19f63adb690a4d7c0aeeb0c95e12d01e51f built height : 623578
Timestamp: 1657493260676 Timestamp [UTC]: 2022-07-10 23:47:40 Age [y:d:h:m:s]: 27652:10:0.962
Block: 623582 Fee: 0.11998 Tx size: 9.403 kB
Tx version: 1 No of confirmations: 5267985 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.11998 Deposited to SC 0.00000
Sender : dero1qyq3cgq5e8ymlaf8cj9e6r8ylcq2k7puz9mk7h9l8k3udn4rx4al7qq3gdj6x
address
dero1qy0rkr6r7kcy4te9c2m6rdwkhy6su25atx7xj7r784u3ttqlvpjdvqgp38age
dero1qyq3cgq5e8ymlaf8cj9e6r8ylcq2k7puz9mk7h9l8k3udn4rx4al7qq3gdj6x
SC Balance: 0.00000 DERO
SC CODE:
  //
//Multisig wallet! Written by thedudelebowski for the Dero smart contract competition!
//Version 2.0 - Competition entry 2021
//Check out https://github.com/lebowski1234/dero-multisig-2021 for setup and usage instructions. 
// 
//This instance of the multisig was developed by secretnamebasis for the DE! community
//

// This function is used to initialize parameters during install time
Function Initialize() Uint64
10 STORE("txCount", 0) 
20 userSetup(SIGNER())
30 RETURN 0
End Function


//Function userSetup: Contains all variables which must be set by the person deploying the contract.
Function userSetup(signer String) Uint64
10 STORE("numberOfOwners", 3) //Must match number of non-blank "owner" fields below. 
20 STORE("authorizationConsensus", 2) //Number of owners that must sign before a transaction is authorized. Can be 1 to No. of owners. 
30 STORE("owner1", signer) // DE! wallet
//Add additional owners below if more than 6 owners required. 
40 STORE("owner2", ADDRESS_RAW("dero1qy2jy9yjj50w2vgdefhssn738qdu8fdt58nnmm8lt7kx6msaey0n2qqtwluyy")) // rpc wallet
50 STORE("owner3", ADDRESS_RAW("dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g")) // hot-wallet
90 STORE("error", "setup complete") 
100 RETURN 0
End Function



//Entrypoint functions:

//Function Deposit: This entrypoint function is called to deposit funds into the wallet. 
Function Deposit() Uint64
10 RETURN 0
End Function


//Function Send: Create a new transaction. To is a Dero address, Amount is the amount to send from the wallet balance. 
Function Send(To String, Amount Uint64) Uint64
10 DIM ownerNo, txCount as Uint64
50 LET ownerNo = sendChecks(To, Amount, SIGNER())
60 IF ownerNo != 0 THEN GOTO 80
70 RETURN 0 //Initial checks failed, exiting
80 storeTx(To, Amount, ownerNo)
90 storeSigners()
100 LET txCount = LOAD("txCount")
110 STORE("tx" + txCount + "_signer" + ownerNo, 1) //Transaction originator signs transaction automatically
120 LET txCount = txCount + 1
130 STORE("txCount", txCount)
140 RETURN 0
End Function


//Function Sign: The main sign function. Signs transaction ID, and sends Dero if required number of signatures has been reached. 
Function Sign(ID Uint64) Uint64
10 DIM ownerNo as Uint64
50 LET ownerNo = signChecks(SIGNER())
60 IF ownerNo != 0 THEN GOTO 80
70 RETURN 0 //Initial checks failed, exiting
80 sign(ID, ownerNo)
90 IF authorized(ID) == 0 THEN GOTO 110 //In this case, 0 = true, as authorized must return 0 to store values within function.
100 RETURN 0 //Not yet authorized, exiting
110 sendDero(ID)//Send Dero 
120 RETURN 0
End Function



//The following functions are called by the main functions, to break up the code into easy to read sections. 


//Function sendChecks: sequence of checks to perform before transaction is accepted.
Function sendChecks(to String, amount Uint64, signer String) Uint64
10 DIM ownerNo as Uint64
20 IF sendValid(to, amount) == 1 THEN GOTO 30 
25 RETURN 0
30 LET ownerNo = verifySigner(signer)
40 IF ownerNo != 0 THEN GOTO 60
50 RETURN 0
60 RETURN ownerNo //All checks passed, return owner No. to calling function. 
End Function


//Function signChecks: sequence of checks to perform before signing request is accepted.
Function signChecks(signer String) Uint64
10 DIM ownerNo as Uint64
20 LET ownerNo = verifySigner(signer)
30 IF ownerNo != 0 THEN GOTO 50
35 STORE("error", "failed at signChecks L35") //for debug only
40 RETURN 0
50 RETURN ownerNo //All checks passed, return owner No. to calling function. 
End Function


//Function sendValid: Checks whether Send transaction parameters are valid.
Function sendValid(s String, i Uint64) Uint64
10 IF IS_ADDRESS_VALID(ADDRESS_RAW(s)) == 1 THEN GOTO 40
20 STORE("error", "failed at sendValid L20 - recipient not a valid Dero address") //for debug only
30 RETURN 0 //Basic format check has failed, exit
40 IF i >0 THEN GOTO 70
50 STORE("error", "failed at sendValid L50 - Amount to send is zero, not a valid transaction") //for debug only
60 RETURN 0 //Basic format check has failed, exit
70 RETURN 1
End Function


//Function verifySigner: Check that signer is an owner. 
Function verifySigner(s String) Uint64
10 DIM inc, numberOfOwners as Uint64
30 LET numberOfOwners = LOAD("numberOfOwners") //ok up to here!
40 LET inc = 1
50 IF s == LOAD("owner" + inc) THEN GOTO 110 
60 IF inc == numberOfOwners THEN GOTO 90 //we have reached numberOfOwners, and not matched the signers address to an owner.
70 LET inc = inc + 1
80 GOTO 50
90 STORE("error", "failed at verifySigner L90 - Signer address not found in list of owners") //for debug only
100 RETURN 0 //Signer ownership check has failed, result is 0. Calling functon must exit on 0. 
110 RETURN inc //Signer is in list of owners, return owner index.
End Function


//Function storeTx: store a new transaction in the DB
Function storeTx(to String, amount Uint64, owner Uint64) Uint64
10 DIM txCount, ownerNo as Uint64
20 LET txCount = LOAD("txCount")
30 STORE("txIndex_"+txCount, txCount) 
40 STORE("recipient_"+txCount, to)
50 STORE("amount_"+txCount, amount)
60 STORE("sent_"+txCount, 0) //Not sent yet
70 STORE("signatures_"+txCount, 1) //Set to 1 immediately as originator signs as part of transaction creation
80 RETURN 0
End Function 


//Function storeSigners: setup (store) signer fields for a new transaction, based on current txCount.
Function storeSigners() Uint64
10 DIM txCount, ownerNo, numberOfOwners as Uint64
20 LET txCount = LOAD("txCount")
30 LET numberOfOwners = LOAD("numberOfOwners")
40 LET ownerNo = 1
50 STORE("tx" + txCount + "_signer" + ownerNo , 0)
60 IF ownerNo == numberOfOwners THEN GOTO 90
70 LET ownerNo = ownerNo + 1
80 GOTO 50
90 RETURN 0
End Function


//Function sendDero: Retrieve transaction from ID No, send Dero, mark transaction as sent. 
Function sendDero(ID Uint64) Uint64
10 DIM isSent, amount as Uint64
11 DIM to as String
20 LET isSent = LOAD("sent_" + ID)
30 IF isSent == 0 THEN GOTO 60
40 STORE("error", "failed at sendDero L40 - Transaction has already been sent") //for debug only
50 RETURN 0
60 LET amount = LOAD("amount_" + ID)
70 LET to = LOAD("recipient_" + ID)
90 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(to), amount) 
100 STORE("sent_" + ID, 1) //mark tx as sent
110 RETURN 0
End Function


//Function authorized: Counts number of signatures for a transaction, and compares with consensus. Returns 1 if consensus reached.
Function authorized(ID Uint64) Uint64
10 DIM authCount, isSigned, ownerNo, numberOfOwners, authorizationConsensus as Uint64
20 LET numberOfOwners = LOAD("numberOfOwners")
30 LET authorizationConsensus = LOAD("authorizationConsensus")
40 LET ownerNo = 1
50 LET isSigned = LOAD("tx" + ID + "_signer" + ownerNo)
60 LET authCount = authCount + isSigned
70 IF ownerNo == numberOfOwners THEN GOTO 100
80 LET ownerNo = ownerNo + 1
90 GOTO 50
100 IF authCount >= authorizationConsensus THEN GOTO 140
120 RETURN 1
140 RETURN 0
End Function


//Function sign: check TX ID exists, then sign TX if owner has not already signed
Function sign(ID Uint64, owner Uint64) Uint64
10 DIM isSigned, signatures as Uint64
20 IF EXISTS("tx" + ID + "_signer" + owner) THEN GOTO 50
30 STORE("error", "failed at sign L30 - Transaction ID not found") //for debug only
40 RETURN 0
50 LET isSigned = LOAD("tx" + ID + "_signer" + owner)
60 IF isSigned == 0 THEN GOTO 90 //Transaction is not yet signed for this owner.
70 STORE("error", "failed at sign L30 - Transaction already signed for owner " + owner) //for debug only
80 RETURN 0
90 STORE("tx" + ID + "_signer" + owner, 1)//Sign transaction for this owner.
91 LET signatures = LOAD("signatures_"+ID) 
92 STORE("signatures_"+ID, signatures + 1) //increment signature count - for user interface
110 RETURN 0
End Function


SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'// //Multisig wallet! Written by thedudelebowski for the Dero smart contract competition! //Version 2.0 - Competition entry 2021 //Check out https://github.com/lebowski1234/dero-multisig-2021 for setup and usage instructions. // //This instance of the multisig was developed by secretnamebasis for the DE! community // // This function is used to initialize parameters during install time Function Initialize() Uint64 10 STORE("txCount", 0) 20 userSetup(SIGNER()) 30 RETURN 0 End Function //Function userSetup: Contains all variables which must be set by the person deploying the contract. Function userSetup(signer String) Uint64 10 STORE("numberOfOwners", 3) //Must match number of non-blank "owner" fields below. 20 STORE("authorizationConsensus", 2) //Number of owners that must sign before a transaction is authorized. Can be 1 to No. of owners. 30 STORE("owner1", signer) // DE! wallet //Add additional owners below if more than 6 owners required. 40 STORE("owner2", ADDRESS_RAW("dero1qy2jy9yjj50w2vgdefhssn738qdu8fdt58nnmm8lt7kx6msaey0n2qqtwluyy")) // rpc wallet 50 STORE("owner3", ADDRESS_RAW("dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g")) // hot-wallet 90 STORE("error", "setup complete") 100 RETURN 0 End Function //Entrypoint functions: //Function Deposit: This entrypoint function is called to deposit funds into the wallet. Function Deposit() Uint64 10 RETURN 0 End Function //Function Send: Create a new transaction. To is a Dero address, Amount is the amount to send from the wallet balance. Function Send(To String, Amount Uint64) Uint64 10 DIM ownerNo, txCount as Uint64 50 LET ownerNo = sendChecks(To, Amount, SIGNER()) 60 IF ownerNo != 0 THEN GOTO 80 70 RETURN 0 //Initial checks failed, exiting 80 storeTx(To, Amount, ownerNo) 90 storeSigners() 100 LET txCount = LOAD("txCount") 110 STORE("tx" + txCount + "_signer" + ownerNo, 1) //Transaction originator signs transaction automatically 120 LET txCount = txCount + 1 130 STORE("txCount", txCount) 140 RETURN 0 End Function //Function Sign: The main sign function. Signs transaction ID, and sends Dero if required number of signatures has been reached. Function Sign(ID Uint64) Uint64 10 DIM ownerNo as Uint64 50 LET ownerNo = signChecks(SIGNER()) 60 IF ownerNo != 0 THEN GOTO 80 70 RETURN 0 //Initial checks failed, exiting 80 sign(ID, ownerNo) 90 IF authorized(ID) == 0 THEN GOTO 110 //In this case, 0 = true, as authorized must return 0 to store values within function. 100 RETURN 0 //Not yet authorized, exiting 110 sendDero(ID)//Send Dero 120 RETURN 0 End Function //The following functions are called by the main functions, to break up the code into easy to read sections. //Function sendChecks: sequence of checks to perform before transaction is accepted. Function sendChecks(to String, amount Uint64, signer String) Uint64 10 DIM ownerNo as Uint64 20 IF sendValid(to, amount) == 1 THEN GOTO 30 25 RETURN 0 30 LET ownerNo = verifySigner(signer) 40 IF ownerNo != 0 THEN GOTO 60 50 RETURN 0 60 RETURN ownerNo //All checks passed, return owner No. to calling function. End Function //Function signChecks: sequence of checks to perform before signing request is accepted. Function signChecks(signer String) Uint64 10 DIM ownerNo as Uint64 20 LET ownerNo = verifySigner(signer) 30 IF ownerNo != 0 THEN GOTO 50 35 STORE("error", "failed at signChecks L35") //for debug only 40 RETURN 0 50 RETURN ownerNo //All checks passed, return owner No. to calling function. End Function //Function sendValid: Checks whether Send transaction parameters are valid. Function sendValid(s String, i Uint64) Uint64 10 IF IS_ADDRESS_VALID(ADDRESS_RAW(s)) == 1 THEN GOTO 40 20 STORE("error", "failed at sendValid L20 - recipient not a valid Dero address") //for debug only 30 RETURN 0 //Basic format check has failed, exit 40 IF i >0 THEN GOTO 70 50 STORE("error", "failed at sendValid L50 - Amount to send is zero, not a valid transaction") //for debug only 60 RETURN 0 //Basic format check has failed, exit 70 RETURN 1 End Function //Function verifySigner: Check that signer is an owner. Function verifySigner(s String) Uint64 10 DIM inc, numberOfOwners as Uint64 30 LET numberOfOwners = LOAD("numberOfOwners") //ok up to here! 40 LET inc = 1 50 IF s == LOAD("owner" + inc) THEN GOTO 110 60 IF inc == numberOfOwners THEN GOTO 90 //we have reached numberOfOwners, and not matched the signers address to an owner. 70 LET inc = inc + 1 80 GOTO 50 90 STORE("error", "failed at verifySigner L90 - Signer address not found in list of owners") //for debug only 100 RETURN 0 //Signer ownership check has failed, result is 0. Calling functon must exit on 0. 110 RETURN inc //Signer is in list of owners, return owner index. End Function //Function storeTx: store a new transaction in the DB Function storeTx(to String, amount Uint64, owner Uint64) Uint64 10 DIM txCount, ownerNo as Uint64 20 LET txCount = LOAD("txCount") 30 STORE("txIndex_"+txCount, txCount) 40 STORE("recipient_"+txCount, to) 50 STORE("amount_"+txCount, amount) 60 STORE("sent_"+txCount, 0) //Not sent yet 70 STORE("signatures_"+txCount, 1) //Set to 1 immediately as originator signs as part of transaction creation 80 RETURN 0 End Function //Function storeSigners: setup (store) signer fields for a new transaction, based on current txCount. Function storeSigners() Uint64 10 DIM txCount, ownerNo, numberOfOwners as Uint64 20 LET txCount = LOAD("txCount") 30 LET numberOfOwners = LOAD("numberOfOwners") 40 LET ownerNo = 1 50 STORE("tx" + txCount + "_signer" + ownerNo , 0) 60 IF ownerNo == numberOfOwners THEN GOTO 90 70 LET ownerNo = ownerNo + 1 80 GOTO 50 90 RETURN 0 End Function //Function sendDero: Retrieve transaction from ID No, send Dero, mark transaction as sent. Function sendDero(ID Uint64) Uint64 10 DIM isSent, amount as Uint64 11 DIM to as String 20 LET isSent = LOAD("sent_" + ID) 30 IF isSent == 0 THEN GOTO 60 40 STORE("error", "failed at sendDero L40 - Transaction has already been sent") //for debug only 50 RETURN 0 60 LET amount = LOAD("amount_" + ID) 70 LET to = LOAD("recipient_" + ID) 90 SEND_DERO_TO_ADDRESS(ADDRESS_RAW(to), amount) 100 STORE("sent_" + ID, 1) //mark tx as sent 110 RETURN 0 End Function //Function authorized: Counts number of signatures for a transaction, and compares with consensus. Returns 1 if consensus reached. Function authorized(ID Uint64) Uint64 10 DIM authCount, isSigned, ownerNo, numberOfOwners, authorizationConsensus as Uint64 20 LET numberOfOwners = LOAD("numberOfOwners") 30 LET authorizationConsensus = LOAD("authorizationConsensus") 40 LET ownerNo = 1 50 LET isSigned = LOAD("tx" + ID + "_signer" + ownerNo) 60 LET authCount = authCount + isSigned 70 IF ownerNo == numberOfOwners THEN GOTO 100 80 LET ownerNo = ownerNo + 1 90 GOTO 50 100 IF authCount >= authorizationConsensus THEN GOTO 140 120 RETURN 1 140 RETURN 0 End Function //Function sign: check TX ID exists, then sign TX if owner has not already signed Function sign(ID Uint64, owner Uint64) Uint64 10 DIM isSigned, signatures as Uint64 20 IF EXISTS("tx" + ID + "_signer" + owner) THEN GOTO 50 30 STORE("error", "failed at sign L30 - Transaction ID not found") //for debug only 40 RETURN 0 50 LET isSigned = LOAD("tx" + ID + "_signer" + owner) 60 IF isSigned == 0 THEN GOTO 90 //Transaction is not yet signed for this owner. 70 STORE("error", "failed at sign L30 - Transaction already signed for owner " + owner) //for debug only 80 RETURN 0 90 STORE("tx" + ID + "_signer" + owner, 1)//Sign transaction for this owner. 91 LET signatures = LOAD("signatures_"+ID) 92 STORE("signatures_"+ID, signatures + 1) //increment signature count - for user interface 110 RETURN 0 End Function ']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
0100000500da8726949da837da3c6c6feacc8ceb9df78b337858d330118f2998c66b56dc8df40e2b0100000000000000000000000000000000000000000000000000000000000000000000eb29e82978b1870ec1bf429bb24705e426b78948624b97584428d34376d13bff182e1322cbe070c3de273cb542901bddffa248c52f45c76e76f27df282c8fdef36a1a8b7df40035f519035b611316759c8bc6dc348ef6ba8742af1857a69fbe610b161db79c2935b7f8bbc9ffe35d4b424d8b575ab67b84c8b15fbb1b10dc25fd054d67c73fa6596aac9259389d5070f680106de5d2aee87e0b27373583a075d6984c317289d467ff7bf611511d1d777b5946f5e1500fc3576d49755ce9000fe9bf5044466fc66618b4e869fadd11a9ff8a8f46824d22fbb12b06b3350c0aab5391c0027c9545ca915840124b9c5422fd0b3ef8a03a8fd5acfd29b468a7ed467f7bd3101005ecaacac5660455033dab99e9fd19f63adb690a4d7c0aeeb0c95e12d01e51fef3da26853435f434f444553791ed62f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a6a53435f414354494f4e550107dc6b5f899ce0fa00f3319373855ff653039cac8c8a7e8ccdba4b6067b6add50125f30fadcec0abf736b86f138a0d6713980b96c4fd241073efa809e689d26d0a0114a32815eea9032617b7e44d9f79b333353357731579948f25f62a440135f18a002ce7ad5d9be21317a054a9c100efba1417cfa105dd793a0da458c7477b4433ca011832c3723291b91c4ff5cb25bd239a4957aeb5b8161c14476fe81300b68f4b2d000ee39875c64020a70ef3a668afe675c5a185d5dff7ced3a6ca9a09445d85023d013021df78eef922c803dd43b017ebc516d16119f8342312dbd9aeff402daa258c001f77d9bc95ed87e95cb8821ef098bb986ebb86d14554449d765d6da2cacf7529002172a5358f6462fdbe41c58035b001d55c1c294340371c5b439415ca741ffb75011723fc5f4ef282ac01a9259f262cc137905a8e66b5a0badd478cce50199bd89e0120601b879ca69f6eef75aded5a78849819b2533068e1b7b3aa04e38426098e880013959accb80a442e8fe3597b43aa101162720ba5386e50bbf138773c3bada291011478d2b33fdb1539d8331e036ff82bc0ead5efee80f5f6afeaba44309e7d6b550026352241fa071e54b6d2ac2191c977965c10cbd4930a18fcf96b5610764c8dc70000000000000000000000000000000000000000000000000000000000000000139f2eb2f4b22680803a259be77671185425100cacd286876779f2de25b7750a2c89804c275d5c1c10c1caff7f8a486646235f811195485371ea04a01812b1ee00283b28405fe7d17ddea5a29d9554ff9d5956c42677137a856ca5dd188ced8bac0008cc7581cea2c4668212333d0bfa988093ce1cdb405132283e68d594222fe6fd240183bc3e385ab0c97255735d060b61431dffb772720990b775d0042258ced71ad6039d5c603e0f2380aac358d37252f68a5f03e86bec4a897a0b4ee7bac89b00877fcc1e29cf2d824d4c6b2dab37500620e192ed49182607deb21d261bd5c809dfa3651a20a726155f39c509e35a4e4cc637334c03051a8158b51d2a7f9ccb2df2601bffaf327cbf764ca8dbf792120b1a1901fc2834b76df3cb8bc342ce44161727f0827c0c34399cf0fdba0c7a4680d07c2e1bd679c6543c1f10b0b31c8b2068760db124c59b65dd943ff3584564dffa5e86733e1e0eb56342691844b68b2921b0d0d1ad1d1dc730be31206a4abee3957935091a2e30d99fd7e90032ec0224df691d6df2979cf6230de0140c3924564f68ceff122be02bd14d14758d8020000bbe7b21e0358c0104bd6cf37097aa9b78ea6742cd96b4dd72759d26a4df3241011cd6318d691e6a35724a85055fd488dd472b45376b80fed15faf90a8efc8d99e0106f18af0118d31381437d893d51863ac85219b33c5425bfeec7b7047c0c85c8301192e0c6f4a689f3c0a3ac26345b1d01ca04fd8293a501dbb502d98392bd41adb002617d3ac8c234ca4b1a60868e79658d350e6fafcd5d7b7ee0e1ac43d2bba7884001a414c869eef4c9f3998baa1120c5fddf957b7807b017972e8fd1ea6afc6ffb80026290e2d4ba2a33ebfd936d9b375b6d987e9027c874deace8664b5cad8fd8045001c225a2318a2cca04fed17b4d502f47448e3d9d4e7a1486ee64264c7893016c5001b1e5225e9cc6f55060f0f0e3c2f19797bb065e690bdffb75527686bac253d77012d052a682844f4f84d3b89dafe4c7aed4ec37abb4dce47f38d6dc3608c61017a011b0f6027be2e28c863e9dd1de169349afc1d734fc9503d2ece3a078f7d4faf5801068516a276196ef075214b3fa76799d6d08e1170d4be1d34a587fae768ab5fcb0129aa349051c93d74961708a7d6eec8dabb8790f0ac9db2a3b3741e897ab8599700
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project