logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: ad6d5ca92bdcb93f44fca03264783d6e28bbac36535ddec5cda9f6ff3f84dbd1 Type SC

Block: 2d12a3a4458d8ffc2692819fbffe093899bf16e814138ba45a0c10c90bfdac59 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 10
SCID string variables
key value
C 2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f646174650d0a2f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203229202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229200d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c74367830672229290d0a35302053544f524528226f776e657233222c202222290d0a36302053544f524528226f776e657234222c20222229200d0a37302053544f524528226f776e657235222c20222229200d0a38302053544f524528226f776e657236222c20222229200d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a
authorizationConsensus 2
error 6661696c6564206174207369676e436865636b73204c3335
numberOfOwners 2
owner1 011c2014c9c9bff527c48b9d0ce4fe00ab783c11776f5cbf3da3c6cea3357bff00
owner2 1800b52b91c7a7be86829e39a7fdb6ddda05a641598909b8e11c052cf0b02ec701
owner3
owner4
owner5
owner6
txCount 0
SCID uint64 variables
key value
built BLID : 13eeb83eeee5de375eb2ba033ac72bab0fa6258e892a0eb849d6a33bb8bdc33b
Tx RootHash: 2df374b3d4c63ef2f3d8f10e1aff5300a583abd9b7ce6b72a7f097091dd32acc built height : 623657
Timestamp: 1657494697864 Timestamp [UTC]: 2022-07-11 00:11:37 Age [y:d:h:m:s]: 27594:46:9.941
Block: 623661 Fee: 0.11940 Tx size: 9.369 kB
Tx version: 1 No of confirmations: 5257207 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.11940 Deposited to SC 0.00000
Sender : dero1qyq3cgq5e8ymlaf8cj9e6r8ylcq2k7puz9mk7h9l8k3udn4rx4al7qq3gdj6x
address
dero1qyq3cgq5e8ymlaf8cj9e6r8ylcq2k7puz9mk7h9l8k3udn4rx4al7qq3gdj6x
dero1qyfu0m3fzw2ctzm8lh6d97mgw5r8ql579z4xz6945xg4ftd5q2nn6qqdx9pxm
SC Balance: 0.00000 DERO
SC CODE:
  // 
//This instance of the multisig was developed by secretnamebasis for the DE! community
//date
//
//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 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", 2) //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) 
//Add additional owners below if more than 6 owners required. 
40 STORE("owner2", ADDRESS_RAW("dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g"))
50 STORE("owner3", "")
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:'// //This instance of the multisig was developed by secretnamebasis for the DE! community //date // //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 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", 2) //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) //Add additional owners below if more than 6 owners required. 40 STORE("owner2", ADDRESS_RAW("dero1qyvqpdftj8r6005xs20rnflakmwa5pdxg9vcjzdcuywq2t8skqhvwqglt6x0g")) 50 STORE("owner3", "") 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
0100000500a9882613eeb83eeee5de375eb2ba033ac72bab0fa6258e892a0eb849d6a33bb8bdc33b010000000000000000000000000000000000000000000000000000000000000000000056a7f00ac916b12e2ebe72cbafb618816322cb8e830f35614865e32b8774f38b8e4a344d4e21a9f23b3e1512f6f88129f238941e0174138952c9c69bcd3341827268f8c8976e4f1972307870b92c496a74d0b2b5f0f72cd804254706d6eb2e14d98700c3abea6e570c83fc141d66f30c508e858ae1208590342a31692dec561a01f917a1f72ab450e8b5656431f31878610108a45d121c524d4d6d59bf7130b2547cb689adcf254df1776983831b99b95df6174d2c01ce9000fe9bf5c42ce2a880747b47517e219e3dfab30e7bf4795e527e84787fd5629f9feb296b1ba76791300af33ddb7f01126039c44bfad4fce9c342e9234465e74732258b488e88e0b5ab273bfb05a194002df374b3d4c63ef2f3d8f10e1aff5300a583abd9b7ce6b72a7f097091dd32accc83da26853435f434f444553791eaf2f2f200d0a2f2f5468697320696e7374616e6365206f6620746865206d756c74697369672077617320646576656c6f706564206279207365637265746e616d65626173697320666f72207468652044452120636f6d6d756e6974790d0a2f2f646174650d0a2f2f0d0a2f2f4d756c74697369672077616c6c657421205772697474656e20627920746865647564656c65626f77736b6920666f7220746865204465726f20736d61727420636f6e747261637420636f6d7065746974696f6e210d0a2f2f56657273696f6e20322e30202d20436f6d7065746974696f6e20656e74727920323032310d0a2f2f436865636b206f75742068747470733a2f2f6769746875622e636f6d2f6c65626f77736b69313233342f6465726f2d6d756c74697369672d3230323120666f7220736574757020616e6420757361676520696e737472756374696f6e732e200d0a0d0a0d0a2f2f20546869732066756e6374696f6e206973207573656420746f20696e697469616c697a6520706172616d657465727320647572696e6720696e7374616c6c2074696d650d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a31302053544f524528227478436f756e74222c203029200d0a323020757365725365747570285349474e45522829290d0a33302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207573657253657475703a20436f6e7461696e7320616c6c207661726961626c6573207768696368206d757374206265207365742062792074686520706572736f6e206465706c6f79696e672074686520636f6e74726163742e0d0a46756e6374696f6e20757365725365747570287369676e657220537472696e67292055696e7436340d0a31302053544f524528226e756d6265724f664f776e657273222c203229202f2f4d757374206d61746368206e756d626572206f66206e6f6e2d626c616e6b20226f776e657222206669656c64732062656c6f772e200d0a32302053544f52452822617574686f72697a6174696f6e436f6e73656e737573222c203229202f2f4e756d626572206f66206f776e6572732074686174206d757374207369676e206265666f72652061207472616e73616374696f6e20697320617574686f72697a65642e2043616e206265203120746f204e6f2e206f66206f776e6572732e200d0a33302053544f524528226f776e657231222c207369676e657229200d0a2f2f416464206164646974696f6e616c206f776e6572732062656c6f77206966206d6f7265207468616e2036206f776e6572732072657175697265642e200d0a34302053544f524528226f776e657232222c20414444524553535f52415728226465726f3171797671706466746a38723630303578733230726e666c616b6d776135706478673976636a7a646375797771327438736b7168767771676c74367830672229290d0a35302053544f524528226f776e657233222c202222290d0a36302053544f524528226f776e657234222c20222229200d0a37302053544f524528226f776e657235222c20222229200d0a38302053544f524528226f776e657236222c20222229200d0a39302053544f524528226572726f72222c2022736574757020636f6d706c6574652229200d0a3130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f456e747279706f696e742066756e6374696f6e733a0d0a0d0a2f2f46756e6374696f6e204465706f7369743a205468697320656e747279706f696e742066756e6374696f6e2069732063616c6c656420746f206465706f7369742066756e647320696e746f207468652077616c6c65742e200d0a46756e6374696f6e204465706f73697428292055696e7436340d0a31302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2053656e643a204372656174652061206e6577207472616e73616374696f6e2e20546f2069732061204465726f20616464726573732c20416d6f756e742069732074686520616d6f756e7420746f2073656e642066726f6d207468652077616c6c65742062616c616e63652e200d0a46756e6374696f6e2053656e6428546f20537472696e672c20416d6f756e742055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2c207478436f756e742061732055696e7436340d0a3530204c4554206f776e65724e6f203d2073656e64436865636b7328546f2c20416d6f756e742c205349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a38302073746f7265547828546f2c20416d6f756e742c206f776e65724e6f290d0a39302073746f72655369676e65727328290d0a313030204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3131302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f2c203129202f2f5472616e73616374696f6e206f726967696e61746f72207369676e73207472616e73616374696f6e206175746f6d61746963616c6c790d0a313230204c4554207478436f756e74203d207478436f756e74202b20310d0a3133302053544f524528227478436f756e74222c207478436f756e74290d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e205369676e3a20546865206d61696e207369676e2066756e6374696f6e2e205369676e73207472616e73616374696f6e2049442c20616e642073656e6473204465726f206966207265717569726564206e756d626572206f66207369676e61747572657320686173206265656e20726561636865642e200d0a46756e6374696f6e205369676e2849442055696e743634292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3530204c4554206f776e65724e6f203d207369676e436865636b73285349474e45522829290d0a3630204946206f776e65724e6f20213d2030205448454e20474f544f2038300d0a37302052455455524e2030202f2f496e697469616c20636865636b73206661696c65642c2065786974696e670d0a3830207369676e2849442c206f776e65724e6f290d0a393020494620617574686f72697a656428494429203d3d2030205448454e20474f544f20313130202f2f496e207468697320636173652c2030203d20747275652c20617320617574686f72697a6564206d7573742072657475726e203020746f2073746f72652076616c7565732077697468696e2066756e6374696f6e2e0d0a3130302052455455524e2030202f2f4e6f742079657420617574686f72697a65642c2065786974696e670d0a3131302073656e644465726f284944292f2f53656e64204465726f200d0a3132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a0d0a2f2f54686520666f6c6c6f77696e672066756e6374696f6e73206172652063616c6c656420627920746865206d61696e2066756e6374696f6e732c20746f20627265616b2075702074686520636f646520696e746f206561737920746f20726561642073656374696f6e732e200d0a0d0a0d0a2f2f46756e6374696f6e2073656e64436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207472616e73616374696f6e2069732061636365707465642e0d0a46756e6374696f6e2073656e64436865636b7328746f20537472696e672c20616d6f756e742055696e7436342c207369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a32302049462073656e6456616c696428746f2c20616d6f756e7429203d3d2031205448454e20474f544f203330200d0a32352052455455524e20300d0a3330204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3430204946206f776e65724e6f20213d2030205448454e20474f544f2036300d0a35302052455455524e20300d0a36302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e436865636b733a2073657175656e6365206f6620636865636b7320746f20706572666f726d206265666f7265207369676e696e6720726571756573742069732061636365707465642e0d0a46756e6374696f6e207369676e436865636b73287369676e657220537472696e67292055696e7436340d0a31302044494d206f776e65724e6f2061732055696e7436340d0a3230204c4554206f776e65724e6f203d207665726966795369676e6572287369676e6572290d0a3330204946206f776e65724e6f20213d2030205448454e20474f544f2035300d0a33352053544f524528226572726f72222c20226661696c6564206174207369676e436865636b73204c33352229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a35302052455455524e206f776e65724e6f202f2f416c6c20636865636b73207061737365642c2072657475726e206f776e6572204e6f2e20746f2063616c6c696e672066756e6374696f6e2e200d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e6456616c69643a20436865636b7320776865746865722053656e64207472616e73616374696f6e20706172616d6574657273206172652076616c69642e0d0a46756e6374696f6e2073656e6456616c6964287320537472696e672c20692055696e743634292055696e7436340d0a31302049462049535f414444524553535f56414c494428414444524553535f52415728732929203d3d2031205448454e20474f544f2034300d0a32302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3230202d20726563697069656e74206e6f7420612076616c6964204465726f20616464726573732229202f2f666f72206465627567206f6e6c790d0a33302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a34302049462069203e30205448454e20474f544f2037300d0a35302053544f524528226572726f72222c20226661696c65642061742073656e6456616c6964204c3530202d20416d6f756e7420746f2073656e64206973207a65726f2c206e6f7420612076616c6964207472616e73616374696f6e2229202f2f666f72206465627567206f6e6c790d0a36302052455455524e2030202f2f426173696320666f726d617420636865636b20686173206661696c65642c20657869740d0a37302052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207665726966795369676e65723a20436865636b2074686174207369676e657220697320616e206f776e65722e200d0a46756e6374696f6e207665726966795369676e6572287320537472696e67292055696e7436340d0a31302044494d20696e632c206e756d6265724f664f776e6572732061732055696e7436340d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e6572732229202f2f6f6b20757020746f2068657265210d0a3430204c455420696e63203d20310d0a35302049462073203d3d204c4f414428226f776e657222202b20696e6329205448454e20474f544f20313130200d0a363020494620696e63203d3d206e756d6265724f664f776e657273205448454e20474f544f203930202f2f776520686176652072656163686564206e756d6265724f664f776e6572732c20616e64206e6f74206d61746368656420746865207369676e657273206164647265737320746f20616e206f776e65722e0d0a3730204c455420696e63203d20696e63202b20310d0a383020474f544f2035300d0a39302053544f524528226572726f72222c20226661696c6564206174207665726966795369676e6572204c3930202d205369676e65722061646472657373206e6f7420666f756e6420696e206c697374206f66206f776e6572732229202f2f666f72206465627567206f6e6c790d0a3130302052455455524e2030202f2f5369676e6572206f776e65727368697020636865636b20686173206661696c65642c20726573756c7420697320302e2043616c6c696e672066756e63746f6e206d7573742065786974206f6e20302e200d0a3131302052455455524e20696e63202f2f5369676e657220697320696e206c697374206f66206f776e6572732c2072657475726e206f776e657220696e6465782e0d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073746f726554783a2073746f72652061206e6577207472616e73616374696f6e20696e207468652044420d0a46756e6374696f6e2073746f7265547828746f20537472696e672c20616d6f756e742055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a33302053544f524528227478496e6465785f222b7478436f756e742c207478436f756e7429200d0a34302053544f52452822726563697069656e745f222b7478436f756e742c20746f290d0a35302053544f52452822616d6f756e745f222b7478436f756e742c20616d6f756e74290d0a36302053544f5245282273656e745f222b7478436f756e742c203029202f2f4e6f742073656e74207965740d0a37302053544f524528227369676e6174757265735f222b7478436f756e742c203129202f2f53657420746f203120696d6d6564696174656c79206173206f726967696e61746f72207369676e732061732070617274206f66207472616e73616374696f6e206372656174696f6e0d0a38302052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a0d0a2f2f46756e6374696f6e2073746f72655369676e6572733a207365747570202873746f726529207369676e6572206669656c647320666f722061206e6577207472616e73616374696f6e2c206261736564206f6e2063757272656e74207478436f756e742e0d0a46756e6374696f6e2073746f72655369676e65727328292055696e7436340d0a31302044494d207478436f756e742c206f776e65724e6f2c206e756d6265724f664f776e6572732061732055696e7436340d0a3230204c4554207478436f756e74203d204c4f414428227478436f756e7422290d0a3330204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3430204c4554206f776e65724e6f203d20310d0a35302053544f52452822747822202b207478436f756e74202b20225f7369676e657222202b206f776e65724e6f202c2030290d0a3630204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f2039300d0a3730204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a383020474f544f2035300d0a39302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e2073656e644465726f3a205265747269657665207472616e73616374696f6e2066726f6d204944204e6f2c2073656e64204465726f2c206d61726b207472616e73616374696f6e2061732073656e742e200d0a46756e6374696f6e2073656e644465726f2849442055696e743634292055696e7436340d0a31302044494d20697353656e742c20616d6f756e742061732055696e7436340d0a31312044494d20746f20617320537472696e670d0a3230204c455420697353656e74203d204c4f4144282273656e745f22202b204944290d0a333020494620697353656e74203d3d2030205448454e20474f544f2036300d0a34302053544f524528226572726f72222c20226661696c65642061742073656e644465726f204c3430202d205472616e73616374696f6e2068617320616c7265616479206265656e2073656e742229202f2f666f72206465627567206f6e6c790d0a35302052455455524e20300d0a3630204c455420616d6f756e74203d204c4f41442822616d6f756e745f22202b204944290d0a3730204c455420746f203d204c4f41442822726563697069656e745f22202b204944290d0a39302053454e445f4445524f5f544f5f4144445245535328414444524553535f52415728746f292c20616d6f756e7429200d0a3130302053544f5245282273656e745f22202b2049442c203129202f2f6d61726b2074782061732073656e740d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e20617574686f72697a65643a20436f756e7473206e756d626572206f66207369676e61747572657320666f722061207472616e73616374696f6e2c20616e6420636f6d7061726573207769746820636f6e73656e7375732e2052657475726e73203120696620636f6e73656e73757320726561636865642e0d0a46756e6374696f6e20617574686f72697a65642849442055696e743634292055696e7436340d0a31302044494d2061757468436f756e742c2069735369676e65642c206f776e65724e6f2c206e756d6265724f664f776e6572732c20617574686f72697a6174696f6e436f6e73656e7375732061732055696e7436340d0a3230204c4554206e756d6265724f664f776e657273203d204c4f414428226e756d6265724f664f776e65727322290d0a3330204c455420617574686f72697a6174696f6e436f6e73656e737573203d204c4f41442822617574686f72697a6174696f6e436f6e73656e73757322290d0a3430204c4554206f776e65724e6f203d20310d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e65724e6f290d0a3630204c45542061757468436f756e74203d2061757468436f756e74202b2069735369676e65640d0a3730204946206f776e65724e6f203d3d206e756d6265724f664f776e657273205448454e20474f544f203130300d0a3830204c4554206f776e65724e6f203d206f776e65724e6f202b20310d0a393020474f544f2035300d0a3130302049462061757468436f756e74203e3d20617574686f72697a6174696f6e436f6e73656e737573205448454e20474f544f203134300d0a3132302052455455524e20310d0a3134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a0d0a2f2f46756e6374696f6e207369676e3a20636865636b205458204944206578697374732c207468656e207369676e205458206966206f776e657220686173206e6f7420616c7265616479207369676e65640d0a46756e6374696f6e207369676e2849442055696e7436342c206f776e65722055696e743634292055696e7436340d0a31302044494d2069735369676e65642c207369676e6174757265732061732055696e7436340d0a3230204946204558495354532822747822202b204944202b20225f7369676e657222202b206f776e657229205448454e20474f544f2035300d0a33302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e204944206e6f7420666f756e642229202f2f666f72206465627567206f6e6c790d0a34302052455455524e20300d0a3530204c45542069735369676e6564203d204c4f41442822747822202b204944202b20225f7369676e657222202b206f776e6572290d0a36302049462069735369676e6564203d3d2030205448454e20474f544f203930202f2f5472616e73616374696f6e206973206e6f7420796574207369676e656420666f722074686973206f776e65722e0d0a37302053544f524528226572726f72222c20226661696c6564206174207369676e204c3330202d205472616e73616374696f6e20616c7265616479207369676e656420666f72206f776e65722022202b206f776e657229202f2f666f72206465627567206f6e6c790d0a38302052455455524e20300d0a39302053544f52452822747822202b204944202b20225f7369676e657222202b206f776e65722c2031292f2f5369676e207472616e73616374696f6e20666f722074686973206f776e65722e0d0a3931204c4554207369676e617475726573203d204c4f414428227369676e6174757265735f222b494429200d0a39322053544f524528227369676e6174757265735f222b49442c207369676e617475726573202b203129202f2f696e6372656d656e74207369676e617475726520636f756e74202d20666f72207573657220696e746572666163650d0a3131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a6a53435f414354494f4e5501166657fcd1186b284e26f3587380e515169ce3b269613713375d9bce1eb7e7b30021ff2d815f73d8bf73c6a6fc714da0109d9899b3901dbb9d5897c9f0e2214cb801121071cd28b450cd54c31ce87aea14a12850241920d9c8de79aeb06f6c681e84011e458127530115c8c68586adc0deba122c25998c274c91a29ee6cabfa036fcf2001879502691beee73209219b06224df6b1e859b662257285c86a4228751f35292011707d908c090a8b64cae75f0503a3e2480a92fcc87e8a966c531977e306e0e6d011b31a60458f548077111cc6799bf0dbb9276f5850375a3f0aed3835d063e28e70004e1d236c63977e4ffea4d6d2cb2ead321f9c121627c56ecfdf715731585105d01178fb6b2ff1c05bcf9374f51d07ed5dbfdaaae7e80e436ba28937e9b02f133f00000210f6c5843bd0432a87d8cf8334b0eaea692bdbcc479721bc19c58a1b71b9500156a9d13eed5d4d365f873d867fa635bd6f702f32108094399ea2678346be4820026ed66545f5eb66b90ffe53c88c47c668f363f125640b261afa3d8c4274dada400133f92395131d3ab3ed32d204a088e68f7232f05ab4c87836d085728e79d7af5010000000000000000000000000000000000000000000000000000000000000000052fb7e871f19e7d0be2c5f2cdbfdd92cb981f879f8202f390cfb2bf5f83635b0c3cc3dea9de6fb7383af431da0a79316c5cae04dfb9548482b1cb72b3875cef24b737882979f7a5317f06b7b0a41442d3610d4f317b06752d9a4b14de08190c001b84c9ea5c2b0480fede331fdd4bd9a7f9ab366097b2641ad031f0115287b9b9010608764390e942465a801964ac01f8b4dfaa031d18825b8359bcafb941c6dfdc022afd0f7168d3187169304fa48578e40870fd79cd830bed928022c3e6ff8c3c1c9c31a8892d2b934cf849eace33c3e69d5f3d1cc87013487703cc48b746e30c228a84666e3a179e26684a415391b761e00e7fdae06a8d8e03a428b4f4a96aa61fd354e466ff3e82729098f536c9e244c715a9e551270c12616926cdc363c3140f91dc2e7c0d4e0aac08ab88269dfaaf1d870e2efb37e59baeb60315bedbee9b294195ff459c46c7df6d14a007dae33239783a9079e1e950b79546d8503890322b793c69eda89af428d5694e26d0579f70fdf75d451d29aeba9b157e83213f250af3403f3751eea5fefd7778856a4ea1c6f3888f5a5f37c06904ac40029be44b0a7d9e0928e77e3eea7ed092e7cf6a5293d1354a125835902948b781df6d659e0004adbc7e3ff92a4a46dc55c47f8a4d6445581c362f3228027b2b3ad6a93f262c010095b7c10856a96a09c4b254ded7add286bbd53734e47f33c8f66cb2b5788772002ef2ad2009e964f45a3db5be4e34933af39f42426a8a76d3008875a7c50fbdff01199c26979d2fb7f744da0aae77364035f4c99fa7889ba53a43ed9f8426f695bb0027e2ff56f093c7a9542b70426b20bfa4490ef248be32f7a94800dc471ff70b440107242329d23c34a9e9cf092da349163e0d0f47fe78dffdd207e043caa474c58900065fabf8a9b8dba879635f8a29638a1169c543c605172928bf830c54d71ad9160020a3bbc1c2e2d671d6bd6fc395344d093424fe26de381299e44ee5a64c4ae939011d817d28c6b8464c05137bbf9ce14915e9a11037c49ecda6f47241667e346142000e2e746f4c48186eeec7c0b85a567e2e065524fd334d632ec6fcc42d793e31e2012bf5c5c214b7acdab669ae216012a472a3fee985a61c971333075f1a0dd7c7750024532bee2ef8f3156818609134cf08bcc01f29837acb427d07f6c771e6f29f7b01044797a41082dbde8552031ed8d135579470da8e2de7c6ca3259ed3b1490f54501
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project