Contract con_evm_oracle


Contract Code


  
1 #You cant request and get in the same transaction!!
2 tx_hashes = Hash(default_value=False)
3 ready_for_work = Variable()
4 last_work = Variable()
5 user_whitelist = Variable()
6
7 @construct
8 def seed():
9 ready_for_work.set(True)
10 last_work.set("")
11 user_whitelist.set(["ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89"])
12
13
14 @export
15 def requestData(tx_hash: str, evm_chain: str):
16 assert ctx.caller in user_whitelist.get(), "You are not allowed to use this"
17 evm_chains = ["ETH", "BSC"]
18 assert evm_chain in evm_chains, "Not a valid chain"
19 assert ready_for_work.get() == True, "Oracle is not ready to accept any work"
20 assert tx_hash.startswith("0x"), "Not a valid hash"
21 ready_for_work.set(False)
22 last_work.set([tx_hash, evm_chain])
23
24
25 @export
26 def getData(tx_hash: str, evm_chain: str):
27 return tx_hashes[evm_chain, tx_hash]
28
29
30 @export
31 def setData(tx_hash: str, data: Any, evm_chain: str):
32 assert ctx.caller == "5fe2a80a2d0d4d7a08603451c02ac1ef5b1d0c6b3db118933e349d90a52deb44", "Only the oracle wallet can call this"
33 ready_for_work.set(True)
34 tx_hashes[evm_chain, tx_hash] = data
35
36
37 @export
38 def setWhitelist(users: Any):
39 assert ctx.caller == "ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89", "Only the operator can call this"
40 user_whitelist.set(users)

Byte Code

e30000000000000000000000000500000040000000739e000000650064006401640264038d035a0165026401640464058d025a0365026401640664058d025a0465026401640764058d025a056408640984005a0665076401830165086508640a9c02640b640c840483015a0965076401830165086508640a9c02640d640e840483015a0a6507640183016508650b6508640f9c0364106411840483015a0c650764018301650b64129c0164136414840483015a0d64155300291646da0e636f6e5f65766d5f6f7261636c65da0974785f6861736865732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da0e72656164795f666f725f776f726b290272040000007205000000da096c6173745f776f726bda0e757365725f77686974656c697374630000000000000000000000000200000043000000732400000074006a0164018301010074026a0164028301010074036a0164036701830101006400530029044e54da00da40666636313534346561393465616165623564663038656438363363346139333865393132396162613663656565356633316236363831626465646531316238392904da105f5f72656164795f666f725f776f726bda03736574da0b5f5f6c6173745f776f726bda105f5f757365725f77686974656c697374a900720f000000720f0000007209000000da045f5f5f5f08000000730800000000010a010a01040172100000002902da0774785f68617368da0965766d5f636861696e630200000000000000030000000300000043000000737000000074006a0174026a0383006b06731674046401830182016402640367027d027c017c026b06732e740464048301820174056a03830064056b02734274046406830182017c006a06640783017354740464088301820174056a0764098301010074086a077c007c0167028301010064005300290a4e7a1f596f7520617265206e6f7420616c6c6f77656420746f207573652074686973da03455448da034253437a114e6f7420612076616c696420636861696e547a264f7261636c65206973206e6f7420726561647920746f2061636365707420616e7920776f726bda0230787a104e6f7420612076616c69642068617368462909da03637478da0663616c6c6572720e000000da03676574da0e417373657274696f6e4572726f72720b000000da0a73746172747377697468720c000000720d000000290372110000007212000000da0a65766d5f636861696e73720f000000720f0000007209000000da0b72657175657374446174610f00000073120000000002100106010801100106010e0112010a01721c000000630200000000000000020000000300000043000000730c00000074007c017c0066021900530029014e2901da0b5f5f74785f686173686573290272110000007212000000720f000000720f0000007209000000da07676574446174611c00000073020000000002721e00000029037211000000da04646174617212000000630300000000000000030000000400000043000000732c00000074006a0164016b027312740264028301820174036a046403830101007c0174057c027c0066023c006400530029044eda40356665326138306132643064346437613038363033343531633032616331656635623164306336623364623131383933336533343964393061353264656234347a244f6e6c7920746865206f7261636c652077616c6c65742063616e2063616c6c2074686973542906721600000072170000007219000000720b000000720c000000721d00000029037211000000721f0000007212000000720f000000720f0000007209000000da0773657444617461210000007306000000000212010a0172210000002901da057573657273630100000000000000010000000200000043000000732000000074006a0164016b027312740264028301820174036a047c00830101006400530029034e720a0000007a1f4f6e6c7920746865206f70657261746f722063616e2063616c6c20746869732905721600000072170000007219000000720e000000720c00000029017222000000720f000000720f0000007209000000da0c73657457686974656c6973742800000073040000000002120172230000004e290eda0448617368721d000000da085661726961626c65720b000000720d000000720e0000007210000000da085f5f6578706f7274da03737472721c000000721e000000da03416e7972210000007223000000720f000000720f000000720f0000007209000000da083c6d6f64756c653e01000000731a000000060108010c010c010c0308070601120c06011204060114060601