Contract con_network_bridge_concept


Contract Code


  
1 I = importlib
2
3 deposits = Hash(default_value=0)
4 withdraws = Hash()
5 active = Variable()
6 bridge_token = Variable()
7 bridge_op = Variable()
8 contract_op = Variable()
9
10 @construct
11 def seed():
12 active.set(False)
13 bridge_token.set("con_lusd_lst001")
14 bridge_op.set("ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89")
15 contract_op.set("ff61544ea94eaaeb5df08ed863c4a938e9129aba6ceee5f31b6681bdede11b89")
16
17
18 @export
19 def set_active(state:bool):
20 assert ctx.caller == contract_op.get(), "Only the contract operator can change the active state"
21 active.set(state)
22
23
24 @export
25 def set_bridge_token(contract:str):
26 assert ctx.caller == contract_op.get(), "Only the contract operator can change the bridge token"
27 bridge_token.set(contract)
28
29
30 @export
31 def set_bridge_op(address:str):
32 assert ctx.caller == contract_op.get(), "Only the contract operator can change the bridge operator"
33 bridge_op.set(address)
34
35
36 @export
37 def deposit(amount:float):
38 I.import_module(bridge_token.get()).transfer_from(
39 amount=amount,
40 to=ctx.this,
41 main_account=ctx.caller)
42 if deposits[ctx.caller] == 0:
43 deposits[ctx.caller] = {"time": now, "processed": False, "amount": amount}
44 else:
45 assert deposits[ctx.caller]["processed"] == True, "You have an already ongoing bridge request"
46 deposits[ctx.caller] = {"time": now, "processed": False, "amount": amount}
47
48
49 @export
50 def finish_deposit_bridge_request(request_address: str):
51 assert bridge_op.get() == ctx.caller, "Only the bridge operator address can finish a request"
52 deposit = deposits[ctx.caller]
53
54 assert deposit["processed"] == False, "This request is already processed"
55 deposit["processed"] = True
56 deposits[ctx.caller] = deposit
57
58
59 @export
60 def withdraw(amount:float):
61 if withdraws[ctx.caller] == 0:
62 withdraws[ctx.caller] = {"time": now, "processed": False, "amount": amount}
63 else:
64 withdraws[ctx.caller] = {"time": now, "processed": False, "amount": amount}
65
66
67 @export
68 def finish_withdraw_bridge_request(request_address: str):
69 assert bridge_op.get() == ctx.caller, "Only the bridge operator address can finish a request"
70 withdraw = withdraws[ctx.caller]
71
72 assert withdraw["processed"] == False, "This request is already processed"
73 withdraw["processed"] = True
74 withdraw[ctx.caller] = withdraw
75

Byte Code

e3000000000000000000000000050000004000000073f400000065005a01650264006401640264038d035a0365026401640464058d025a0465056401640664058d025a0665056401640764058d025a0765056401640864058d025a0865056401640964058d025a09640a640b84005a0a650b64018301650c640c9c01640d640e840483015a0d650b64018301650e640f9c0164106411840483015a0f650b64018301650e64129c0164136414840483015a10650b64018301651164159c0164166417840483015a12650b64018301650e64189c016419641a840483015a13650b64018301651164159c01641b641c840483015a14650b64018301650e64189c01641d641e840483015a15641f53002920e900000000da1a636f6e5f6e6574776f726b5f6272696467655f636f6e63657074da086465706f736974732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da09776974686472617773290272050000007206000000da06616374697665da0c6272696467655f746f6b656eda096272696467655f6f70da0b636f6e74726163745f6f70630000000000000000000000000200000043000000732c00000074006a0164018301010074026a0164028301010074036a0164038301010074046a016403830101006400530029044e46da0f636f6e5f6c7573645f6c7374303031da40666636313534346561393465616165623564663038656438363363346139333865393132396162613663656565356633316236363831626465646531316238392905da085f5f616374697665da03736574da0e5f5f6272696467655f746f6b656eda0b5f5f6272696467655f6f70da0d5f5f636f6e74726163745f6f70a90072130000007213000000da00da045f5f5f5f0d000000730c00000000010a010a0104010601040172150000002901da057374617465630100000000000000010000000200000043000000732400000074006a0174026a0383006b027316740464018301820174056a067c00830101006400530029024e7a364f6e6c792074686520636f6e7472616374206f70657261746f722063616e206368616e676520746865206163746976652073746174652907da03637478da0663616c6c65727212000000da03676574da0e417373657274696f6e4572726f72720e000000720f00000029017216000000721300000072130000007214000000da0a7365745f616374697665160000007306000000000210010601721b00000029017205000000630100000000000000010000000200000043000000732400000074006a0174026a0383006b027316740464018301820174056a067c00830101006400530029024e7a364f6e6c792074686520636f6e7472616374206f70657261746f722063616e206368616e6765207468652062726964676520746f6b656e29077217000000721800000072120000007219000000721a0000007210000000720f00000029017205000000721300000072130000007214000000da107365745f6272696467655f746f6b656e1d0000007306000000000210010601721c0000002901da0761646472657373630100000000000000010000000200000043000000732400000074006a0174026a0383006b027316740464018301820174056a067c00830101006400530029024e7a394f6e6c792074686520636f6e7472616374206f70657261746f722063616e206368616e67652074686520627269646765206f70657261746f7229077217000000721800000072120000007219000000721a0000007211000000720f0000002901721d000000721300000072130000007214000000da0d7365745f6272696467655f6f70240000007306000000000210010601721e0000002901da06616d6f756e74630100000000000000010000000500000043000000737000000074006a0174026a03830083016a047c0074056a0674056a0764018d030100740874056a07190064026b027240740964037c0064049c03740874056a073c006e2c740874056a0719006405190064066b02735a740a640783018201740964037c0064049c03740874056a073c006400530029084e2903721f000000da02746fda0c6d61696e5f6163636f756e747201000000462903da0474696d65da0970726f636573736564721f0000007223000000547a2a596f75206861766520616e20616c7265616479206f6e676f696e67206272696467652072657175657374290bda0149da0d696d706f72745f6d6f64756c6572100000007219000000da0d7472616e736665725f66726f6d7217000000da04746869737218000000da0a5f5f6465706f73697473da036e6f77721a0000002901721f000000721300000072130000007214000000da076465706f7369742b0000007312000000000210010e010e01040110020c010e010401722a0000002901da0f726571756573745f61646472657373630100000000000000020000000300000043000000734a00000074006a01830074026a036b0273167404640183018201740574026a0319007d017c016402190064036b027334740464048301820164057c0164023c007c01740574026a033c006400530029064e7a354f6e6c792074686520627269646765206f70657261746f7220616464726573732063616e2066696e697368206120726571756573747223000000467a2154686973207265717565737420697320616c72656164792070726f6365737365645429067211000000721900000072170000007218000000721a00000072280000002902722b000000722a000000721300000072130000007214000000da1d66696e6973685f6465706f7369745f6272696467655f7265717565737439000000730c0000000002060110010a0114010801722c0000006301000000000000000100000004000000430000007338000000740074016a02190064016b027222740364027c0064039c03740074016a023c006e12740364027c0064039c03740074016a023c006400530029044e720100000046290372220000007223000000721f0000002904da0b5f5f7769746864726177737217000000721800000072290000002901721f000000721300000072130000007214000000da08776974686472617743000000730a00000000020e01040110020401722e000000630100000000000000020000000300000043000000734a00000074006a01830074026a036b0273167404640183018201740574026a0319007d017c016402190064036b027334740464048301820164057c0164023c007c017c0174026a033c006400530029064e7a354f6e6c792074686520627269646765206f70657261746f7220616464726573732063616e2066696e697368206120726571756573747223000000467a2154686973207265717565737420697320616c72656164792070726f6365737365645429067211000000721900000072170000007218000000721a000000722d0000002902722b000000722e000000721300000072130000007214000000da1e66696e6973685f77697468647261775f6272696467655f726571756573744d000000730c0000000002060110010a0114010801722f0000004e2916da09696d706f72746c69627224000000da04486173687228000000722d000000da085661726961626c65720e0000007210000000721100000072120000007215000000da085f5f6578706f7274da04626f6f6c721b000000da03737472721c000000721e000000da05666c6f6174722a000000722c000000722e000000722f0000007213000000721300000072130000007214000000da083c6d6f64756c653e0100000073300000000401060108010c010c01040108010c010401080308090601100606011006060110060601100d06011009060110090601