12
12
#include " crypto/sha256.h"
13
13
#include " wallet.hpp"
14
14
15
+ #include < lua.hpp>
15
16
#include < random>
16
17
#include < thread>
17
18
@@ -26,7 +27,7 @@ auto main(int argc, char** argv) -> int {
26
27
log ->error (" Not enough arguments" );
27
28
return 1 ;
28
29
}
29
- auto cfg = cbdc::threepc::read_config (argc - 1 , argv);
30
+ auto cfg = cbdc::threepc::read_config (argc - 2 , argv);
30
31
if (!cfg.has_value ()) {
31
32
log ->error (" Error parsing options" );
32
33
return 1 ;
@@ -74,51 +75,18 @@ auto main(int argc, char** argv) -> int {
74
75
directory,
75
76
log );
76
77
78
+ auto contract_file = args[args.size () - 2 ];
77
79
auto pay_contract = cbdc::buffer ();
78
- pay_contract
79
- = cbdc::buffer::from_hex (
80
- " 1b4c7561540019930d0a1a0a040808785600000000000000000000002877400"
81
- " 1808ac4010008d48b0000058e0001060381030080010000c40003060f000405"
82
- " 0f0003040f0002030f0001020f000001cf0000000f000801cf8000000f00090"
83
- " 1cf0001000f000a01cf8001000f000b01cf0002000f000c018b0000090b0100"
84
- " 00c40002030f000e020f000d018b00000c0b0100018b0100020b020003c4000"
85
- " 4020f000f018b0000100b0100008b0100040b02000fc40004018b0000030b01"
86
- " 000eba000200380100808b00001103010900c40002018b0000020b01000d3a0"
87
- " 10100380100808b00001103810900c40002018b000002c0007f00b80700808b"
88
- " 0000090b010001c40002030f0015020f0014018b0000140b010002a2000102a"
89
- " e0002060f0014018b00000d0b010002a3000102ae0002070f000d0138000080"
90
- " 0f8001168b00000395000180af0080060f000e018b00000b0b0100008b01000"
91
- " d0b02000e8b0200010b0300148b030015c5000700c6000000c7000100970485"
92
- " 66726f6d0483746f048676616c7565048973657175656e63650484736967048"
93
- " 7737472696e670487756e7061636b0492633332206333322049382049382063"
94
- " 363404906765745f6163636f756e745f6b6579048c6765745f6163636f756e7"
95
- " 4048d7061636b5f6163636f756e7404907570646174655f6163636f756e7473"
96
- " 048c7369675f7061796c6f6164048d66726f6d5f62616c616e6365048966726"
97
- " f6d5f73657104887061796c6f6164048a636865636b5f73696704866572726f"
98
- " 72049873657175656e6365206e756d62657220746f6f206c6f770495696e737"
99
- " 56666696369656e742062616c616e6365048b746f5f62616c616e6365048774"
100
- " 6f5f736571008100000085808d91010003880f8000018b00000000010000b50"
101
- " 002000f0002018b000002c8000200c700010083048f6163636f756e745f7072"
102
- " 6566697804896163636f756e745f048c6163636f756e745f6b6579810000008"
103
- " 08080808080939c0100049d8b00000100010000c40002020f0000018b000003"
104
- " 8e0001040b010000c40002020f0002018b0000058e0001060b010002c400020"
105
- " 2c0007f00b80400808b0000058e000109030105008b010002c40003030f0008"
106
- " 020f0007018b0000070b010008c60003008180ff7f0181ff7fc6000300c7000"
107
- " 1008b048c6163636f756e745f6b657904906765745f6163636f756e745f6b65"
108
- " 79048d6163636f756e745f64617461048a636f726f7574696e6504867969656"
109
- " c640487737472696e6704846c656e04906163636f756e745f62616c616e6365"
110
- " 04916163636f756e745f73657175656e63650487756e7061636b04864938204"
111
- " 938810000008080808080809ea00400098b0b02000080020100440202028b02"
112
- " 00018e020502038301008003020000040300c40204021000040547020100840"
113
- " 4906765745f6163636f756e745f6b65790487737472696e6704857061636b04"
114
- " 86493820493881000000808080808080a2a906000b9413030000520000000f0"
115
- " 000060b0300018b03000000040000800401000005020044030501bc810200b8"
116
- " 0200800b0300018b030000000403008004040000050500440305010b0300004"
117
- " 803020047030100830484726574048d7061636b5f6163636f756e7400810000"
118
- " 00808080808080abad030008898b0100008e010301030201008002000000030"
119
- " 10080030200c5010500c6010000c7010100830487737472696e670485706163"
120
- " 6b048a63333220493820493881000000808080808080808080" )
121
- .value ();
80
+ lua_State* L = luaL_newstate ();
81
+ luaL_openlibs (L);
82
+ luaL_dofile (L, contract_file.c_str ());
83
+ lua_getglobal (L, " gen_bytecode" );
84
+ if (lua_pcall (L, 0 , 1 , 0 ) != 0 ) {
85
+ log ->error (" Contract bytecode generation failed, with error:" ,
86
+ lua_tostring (L, -1 ));
87
+ return 1 ;
88
+ }
89
+ pay_contract = cbdc::buffer::from_hex (lua_tostring (L, -1 )).value ();
122
90
123
91
auto pay_keys = std::vector<cbdc::buffer>();
124
92
auto init_count = std::atomic<size_t >();
0 commit comments