logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: 9312e9a459e770b0a658bd64ae575e35fd7036073be90aca785e0b8f921918dd Type SC

Block: 1c535c66ff265cfa4c6f58bed236d890d2756957633e231b48760b00dbe67500 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 100
SCID string variables
key value
C 2f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a36302053544f524528226f776e657234222c20222229200d0a37302053544f524528226f776e657235222c20222229200d0a38302053544f524528226f776e657236222c20222229200d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a
authorizationConsensus 2
error 6661696c6564206174207369676e436865636b73204c3335
numberOfOwners 3
owner1 011c2014c9c9bff527c48b9d0ce4fe00ab783c11776f5cbf3da3c6cea3357bff00
owner2 15221492951ee5310dca6f084fd1381bc3a5aba1e73decff5fac6d6e1dc91f3500
owner3 1800b52b91c7a7be86829e39a7fdb6ddda05a641598909b8e11c052cf0b02ec701
owner4
owner5
owner6
txCount 0
SCID uint64 variables
key value
built BLID : b60ba14fec5bcda7bd0a4835710b3a17329f89fd06f4ce10398d66278fc948e9
Tx RootHash: 3fff277e9599198fae3b686b58731fbce942944d0d49b6f520a5e24c1139e6d3 built height : 622421
Timestamp: 1657471831406 Timestamp [UTC]: 2022-07-10 17:50:31 Age [y:d:h:m:s]: 27695:47:28.653
Block: 622425 Fee: 0.12111 Tx size: 9.477 kB
Tx version: 1 No of confirmations: 5276240 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.12111 Deposited to SC 0.00000
Sender : dero1qyq3cgq5e8ymlaf8cj9e6r8ylcq2k7puz9mk7h9l8k3udn4rx4al7qq3gdj6x
address
dero1qytnwmm3dkv7yfycnvknc4hf0q7lj9p8pwykrt0cre874v6r50dewqgh3j35n
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
60 STORE("owner4", "") 
70 STORE("owner5", "") 
80 STORE("owner6", "") 
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 60 STORE("owner4", "") 70 STORE("owner5", "") 80 STORE("owner6", "") 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
0100000500d5fe25b60ba14fec5bcda7bd0a4835710b3a17329f89fd06f4ce10398d66278fc948e90100000000000000000000000000000000000000000000000000000000000000000000fd873ac2fa8238e30e66913a6157cca5d6bd45e27da4f647fcaef11091fb313a6fb1d3ae64525ab66f6e19002b7b71d6a4e768374f3aa8a6f86f3c29d46360c1185c10fb7b47512e4bb427bf9d37fa96e15496d234fa34679d98e7d513248294cf07e8990beaf20cd9225b054d7138c1d63ef20e331df492420b8c16752d88696acf35d96f95077f80b539b41b23b75c220106cf5e20b9b1ef072ef34ad7ead732b630d5599cb79cce8c3644c6a41ffc619b962bac00ff50b9d46023ce9000fe9bf51c0a09daf7ee101e14415a9f3522278c418856ec2264e11037bd3b61a588d47b01005661e0ca533b540003df7d11f8b1868e288f41dcb9e106a15591cba634ae36013fff277e9599198fae3b686b58731fbce942944d0d49b6f520a5e24c1139e6d3ba3ea26853435f434f444553791f212f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a36302053544f524528226f776e657234222c20222229200d0a37302053544f524528226f776e657235222c20222229200d0a38302053544f524528226f776e657236222c20222229200d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a6a53435f414354494f4e5501103eaf34e73e9302f5fe6d4b70aac94e55173dc848def4fb587a32263def7f540013a2db2a4722e2008d292c27464224ca0eec4dce69cc330336ac66ea6d65079001283b00d1e9090c819aa961a1c7417d3514eb86b6bcaaba828a49e6c75dafd968011cb8af8067c1d525d3f1f4c49616eb49b8419feb9b54a9f124ce1d1ca8ae69f5012362883ecca808b73c3429844b3631fa9f8357d4293a3d56f20bbcf81bc4d73101082c6dc82db02b4328a4405fe5b3c8453d342ceb8db8787dabe085e45ff3210f010abbb8a79e2cdcbc1d8f12e28fa821e5b3b6778580910ec945e43579aca458dd0103b77918a571fafded7abb3bfc4729563688fa0bf5680178473a3e863bbe48ae0103f6c30564284275047fc0af04ec789e386b67815e92ed43f429534d4d7b352c01109ecd920fdd05596e1c9d6dcb85d5e7e9c6543b0bdc1bbd68b11ae925efd98d0024d3411d55504fe9e9a0835eaa6c6b9c2d4f01c5c276604d2cd79cf535cfd472010c6f94f2cbcbdbf8a33f4280b8580ea6e954b2b5f013668a0c9ccb3e07ada6050001d83ba0fb41f360dba773560a61b0c979be26a0f4f8c1956a484fa46902867f01018882536b2435be957fb12856f41457fb310b949fac12d562cf558f2d6be2ac00000000000000000000000000000000000000000000000000000000000000001c2b6ac456bfc75c5f8a9c38d3292314773ed29850f1a50278102bbde917c6932942913474c62bc3768ff8c9d8afbb3d401102e1e30cbf28bb167f5502c081f8010f7d916c75583358086872ad5c7112f11a69b2a84196f796aaa2ad8b7725a3d001260c4789e80c9b6c459e7566a5574d6978699ce0132365e5cd2ef30c48d26d851c379a978d6c7474086219f489fc23fd8b1113aaaac072ea010aa50d5a442bf51ce2eb92da35b8b62f6dd2670761350828317f0a8000310a845509f08ac1fb7220790f32236d0c0082697b27e8262a3243ae8b1adbd2177a2a8b4b14f3af6a56010f8a4c69167b4d52656cdaeb0bfc8883d32e7750124f38d9ab80db5d1f97ee1e68a95085a1142db1eff3411b3d01041367626bc56610228e8edbd660c8822b1991c43fe1d8820faa6b0929cf065121b0022a1f7775f39bedb0889e4475249c09f745ba3b443d87f32c8f42d616324e2a79c31e4b91cb7c259cdd250a76fff024bed5a44f4600e6116f5e21546661bde270ff3137eaf6c0fe92bf2aafb36b680504d80937b63074a2a9d6492e52e2d1e07bd65402db1b168097c7a140f433ff000aeb388ea358dc364d72583cfceec5c91d76b30b7122b46acd0c329b8a4965840005eb405366e7189e022b71d895c18e170e3c39c96adc4c55be76b76bc5d7f2c6001b898a8f7f7e02793111f322e66963ec32f3ee27619944bad9eb091adf84b68c011a30dfbb450bee891236e475df655ffec1f3a14d5ad4cad9014d19a5088f9d9c00057f48fec63887af6ea6a214bf8cfd54ca74e250b2ff8fd2f23bb692dc9a3a1301136c0a7ede0c4c0dfb90b602736bf2009507d87b8fe80706c3902782d682de3d011acd6603cacb719fda0364990d45523a2998eb1d0e20c57e6129d040af0163f40025b1890adfc4c6919f3409ebe9488cffca8f24a48fa28b3ed37bf8ddd85cde0a00131a10a06409ca91dd39d2456bfaeb1bc14c1e19a1abf785f569837b350bc9e90018625aea629a77a39af8f57a897f53d79cd24ff9ee890cdd92457fe32a5307600106311664f7d1a56bba81580b0f75b3115b1572c068c63ae939a628f7f569e733002aea70837f804e08126522ddbfda45d8893803d5e35b34a6e2b4b08d64f8825a0019faeb513ad1e3a259b624cec7343c13a341ff7ad18198a8b39e7c7e0bd6873c01
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project