logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: c1685fa12da9072d5e9bd90c496659d2df9924605e641f97186ac1ae3de067d5 Type SC

Block: e1eabd6aa2a942376cf3369d3b7a20f1b983081b402c26d3a4d63a77e1704210 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 0
SCID string variables
key value
C 2f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a
authorizationConsensus 2
error 736574757020636f6d706c657465
numberOfOwners 3
owner1 1800b52b91c7a7be86829e39a7fdb6ddda05a641598909b8e11c052cf0b02ec701
owner2 15221492951ee5310dca6f084fd1381bc3a5aba1e73decff5fac6d6e1dc91f3500
owner3 1800b52b91c7a7be86829e39a7fdb6ddda05a641598909b8e11c052cf0b02ec701
txCount 0
SCID uint64 variables
key value
built BLID : b26fd45229ed508b57ae15fc8160e8e7429fc2ea7c817fa964b8c1b73ffb4d6d
Tx RootHash: 2b0ac1ea4287645636801c51e127d468807ac10ac321e4c061fe7f2beec04272 built height : 623533
Timestamp: 1657492358626 Timestamp [UTC]: 2022-07-10 23:32:38 Age [y:d:h:m:s]: 27841:40:42.642
Block: 623537 Fee: 0.11998 Tx size: 9.409 kB
Tx version: 1 No of confirmations: 5303794 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.11998 Deposited to SC 0.00000
Sender : dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g
address
dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g
dero1qy8c9ludwnn4zvx9h7cjpsh0t3c5lkzanxwd8dnr50h3jtvd9jy5jqq0gaphq
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
0100000500ad8726b26fd45229ed508b57ae15fc8160e8e7429fc2ea7c817fa964b8c1b73ffb4d6d01000000000000000000000000000000000000000000000000000000000000000000001aa0b75483ca6bac345d34f43a5264f695b42e54fb9c1073329950149464cc1ed80c3d8bee8073362d154c75b59ca1b534c32c076a7f206bd785027b49932814567e20e1b2836a73536a4d7bc2404b6e8c5e312ee7ed188f19e4a93d9b923547a75cb3ab5aee9a3f553cb58a84846c0e4125f58c6f0cb797e34351b5724584c56123204a4c7e27973c883c1a1707c4fa580109de5d1e2579e2d407d0a36f1d82aea9f4b29191ed7c29adfc6b1fdc0e0beb8459e3220113f36554818fd2305337ad5676a5e76c5e301c22879240aa70f131ab17611f473f927a082da1fc767ce267f83e512742c9b8010948ce8776d03a1f9bf226af3de9352f7472c18b27a4b710d739036aaf1998c4002b0ac1ea4287645636801c51e127d468807ac10ac321e4c061fe7f2beec04272ef3da26853435f434f444553791ed62f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203329202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229202f2f204445212077616c6c65740d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f317179326a7939796a6a3530773276676465666873736e3733387164753866647435386e6e6d6d386c74376b78366d73616579306e32717174776c757979222929202f2f207270632077616c6c65740d0a35302053544f524528226f776e657233222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c7436783067222929202f2f20686f742d77616c6c65740d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a6a53435f414354494f4e5501084c54c52c5a936b3ccd33211502577d234ac7eb324be072ed511522110ba04600059a9076b268efadb635dfdbf3f23f4dc1dcdcab67949f8cd80998573576dfd800009d9c7c2d83b563834f0e68f06f9a9984898fefeb0e2699ebe13b6e4ee9ac32001c854b29a33af9c840d0a82d2fa86764e9f70f6f755c13b5af16139d8eb5f7bf00234e6a88f27877b549e92f581ddb3fe862f13d9f7ca679a63430cef7a45526150102ec71600f0efadd712f55b4674218f7e12ab94976b4e8c35b5b6fd4a70f643a000ca3f1195699541297fe5f7be0b1d9480841d74a58b4920530d66cd405f4c1ea0124a0e2e51fb68afaf24c59418c50a85f390babfde125d8eabfe95525424c388a010082189d89f2ee4301067e0893bbbd4907799dd698db24d4fef0c1677944451201209f32044a4c3af420c12a90405ef5d0c6e37b082cd857ed54e1cdc6d95e7b28002743a2d94482e7630a69bd42a937b6ae9a1db7b2caec822de208efb59af88a8c012dedf2627f1a5580f017e94c3106eb280e60b92d3609ed54f949c21d29accb620101df9de29b3f3ecd4604d462d37e58ab4d3135c087de1bb0043aff9a2c14e3f20000000000000000000000000000000000000000000000000000000000000000000bfdc41501c9318042b08b81f4b6fa6f17cf57472ff02edc4e3d02dba24bd4c21880747d376e733c46fc4c56fea2efa1bac9216d8ac43ba63fabc857364e9de523c29467cd145f70c4775bfe892d92b3476c2634645c046076dd134a08ef2f3601225610bb677813c2a75ffdd8bf4af99add86887b6abf74cbd69af3d91c0c93ab001e05785513f5924af7c4a671a0c2e4fe2e419ad5321260ffe9a0cac01b42b4b81895579137ed27a1e4ddd6d72bf9b8a925dd3e699fd848ecf362848c060b1e20044a794be5f3793f329020bc9ceddfbeeef0dfb235e423fe83650b410321638d087b939c82d673be6c6ec68766155ae343a0010f3662ec3eaa76aafcab1de2af03afefd0946fae36b264b0dfe8446290cf25a9dc235d5e5e28d7a5d26f9577421e767f9ea04a6659a96f4d88bfb7a83b7d4818c6c32bceafd02179fa116aeaf5269e94927def3a1b417f4bf8f2a1260d2362992aea5453a670da840d51a0e3021a2120057abeb24d72e9a8ba1383b2603de612917c1e7961c63c7d9a740771ba2ed02550ff7b367ee7011fe3461c295f0b87a1a0e09d80a8e38b403588ec7f5b03ab3ee37d91a95b2d1e3fbef46c6ebabde79bb1df55212df00b36eba8ef5fd9012bc2bed9e22269ff0dec7f47b2d32d0470170b31dc34985849988720b8a1a789000186b6bae4e6987b37e31fd77986bd9f9bed589ae784f6fab6b003b68dea5409002426116d2ac734694785a1012258582f2f1c071f50b58d5e367291d2f55fb3ed0010cd1cc9ef20efc891902395f7ffb9d948b4d84b83808e726f1e6f19c5256bdb002728d3d5fc2ed804384f384627dd1a2f0f2297a013f303bad459f98cf6d23990002d10412b1699461d196fa85a7207717efe1fcea661cb19149b2b9d05a3735487001ea294aee60ade9199458dd043d2c9819a23362c2aef6885ba32d043c9b983db0111c738696756a8bada26083fd71c3ffcf16c7d4c8e52ce2d395f13a256f6756e012ba2428f421176a3ec05bea102f6edc58c24bbdb34b91064df512b5656d0b49e010b04d828d270f7b6ad51d4501e68faa5cfa0f2ddeb678b7e65667effcc24f54200071d8b5b3e49bc403f78996b1bc3db1a5716d55524cb4efc1853abb872c75fe70000214cde067aaa4fb2dc98bed2d8ff27fa77d0d04b89498705dde679a43a2e3b0013b07b7779ff47b775a5b4ab247cf81648840669f79349f7db9b706227ba2e0801
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project