proto::Transaction transaction_to_proto( const transaction_type& block_tx) { proto::Transaction proto_tx; proto_tx.set_version(block_tx.version); proto_tx.set_locktime(block_tx.locktime); for (const transaction_input_type& block_input: block_tx.inputs) { proto::Transaction::Input& proto_input = *proto_tx.add_inputs(); proto_input.set_previous_output_hash( block_input.previous_output.hash.data(), block_input.previous_output.hash.size()); proto_input.set_previous_output_index( block_input.previous_output.index); data_chunk raw_script = save_script(block_input.input_script); proto_input.set_script(&raw_script[0], raw_script.size()); proto_input.set_sequence(block_input.sequence); } for (const transaction_output_type& block_output: block_tx.outputs) { proto::Transaction::Output& proto_output = *proto_tx.add_outputs(); proto_output.set_value(block_output.value); data_chunk raw_script = save_script(block_output.output_script); proto_output.set_script(&raw_script[0], raw_script.size()); } return proto_tx; }
hash_digest hash_transaction_impl(const message::transaction& transaction, uint32_t* hash_type_code) { serializer key; key.write_4_bytes(transaction.version); key.write_var_uint(transaction.inputs.size()); for (message::transaction_input input: transaction.inputs) { key.write_hash(input.hash); key.write_4_bytes(input.index); data_chunk raw_script = save_script(input.input_script); key.write_var_uint(raw_script.size()); key.write_data(raw_script); key.write_4_bytes(input.sequence); } key.write_var_uint(transaction.outputs.size()); for (message::transaction_output output: transaction.outputs) { key.write_8_bytes(output.value); data_chunk raw_script = save_script(output.output_script); key.write_var_uint(raw_script.size()); key.write_data(raw_script); } key.write_4_bytes(transaction.locktime); if (hash_type_code != nullptr) key.write_4_bytes(*hash_type_code); return generate_sha256_hash(key.get_data()); }
int save_rpm(int no_of_binaries, char ** binaries) { char rpmdir[BLOCK_SIZE]; char directory[BLOCK_SIZE]; char commandstr[BLOCK_SIZE]; int retval=0; /* create the rpmpackage directory */ get_setting("directory", directory); sprintf(rpmdir,"%s%c%s", directory, DIRECTORY_SEPARATOR, RPM_SUBDIR); if (directory_exists(rpmdir)==0) { sprintf(commandstr,"%s %s",COMMAND_MKDIR,rpmdir); retval = system(commandstr); } save_spec(directory, rpmdir, no_of_binaries, binaries); save_script(directory); /* import the Debian changelog into the spec file */ debian_changelog_to_spec(directory); return retval; }
size_t satoshi_raw_size(const transaction& packet) { size_t tx_size = 8; tx_size += variable_uint_size(packet.inputs.size()); for (const message::transaction_input& input: packet.inputs) { data_chunk raw_script = save_script(input.input_script); tx_size += 40 + variable_uint_size(raw_script.size()) + raw_script.size(); } tx_size += variable_uint_size(packet.outputs.size()); for (const message::transaction_output& output: packet.outputs) { data_chunk raw_script = save_script(output.output_script); tx_size += 8 + variable_uint_size(raw_script.size()) + raw_script.size(); } return tx_size; }
script read_script(deserializer& deserial) { data_chunk raw_script = read_raw_script(deserial); #ifndef BITCOIN_DISABLE_ASSERTS std::string assert_msg = pretty_hex(raw_script); #endif BITCOIN_ASSERT_MSG( raw_script == save_script(parse_script(raw_script)), assert_msg.c_str()); // Eventually plan to move parse_script to inside here return parse_script(raw_script); }
static void save_merged(GtkWidget *widget, gpointer data) { save_script(); gtk_notebook_next_page(GTK_NOTEBOOK(notebook)); while(gtk_events_pending()) gtk_main_iteration(); sleep(5); gtk_notebook_prev_page(GTK_NOTEBOOK(notebook)); gtk_notebook_prev_page(GTK_NOTEBOOK(notebook)); gtk_notebook_prev_page(GTK_NOTEBOOK(notebook)); gtk_notebook_prev_page(GTK_NOTEBOOK(notebook)); }
void save_transaction( serializer& serial, const message::transaction& packet) { serial.write_4_bytes(packet.version); serial.write_variable_uint(packet.inputs.size()); for (const message::transaction_input& input: packet.inputs) { serial.write_hash(input.previous_output.hash); serial.write_4_bytes(input.previous_output.index); data_chunk raw_script = save_script(input.input_script); serial.write_variable_uint(raw_script.size()); serial.write_data(raw_script); serial.write_4_bytes(input.sequence); } serial.write_variable_uint(packet.outputs.size()); for (const message::transaction_output& output: packet.outputs) { serial.write_8_bytes(output.value); data_chunk raw_script = save_script(output.output_script); serial.write_variable_uint(raw_script.size()); serial.write_data(raw_script); } serial.write_4_bytes(packet.locktime); }
int save_arch() { char directory[BLOCK_SIZE]; char arch_directory[BLOCK_SIZE]; char commandstr[BLOCK_SIZE]; int retval=0; get_setting("directory",directory); sprintf(arch_directory,"%s%c%s", directory, DIRECTORY_SEPARATOR, ARCH_SUBDIR); /* create a directory for building arch packages */ if (directory_exists(arch_directory)==0) { sprintf(commandstr,"%s %s", COMMAND_MKDIR, arch_directory); retval = system(commandstr); } save_PKGBUILD(arch_directory); save_script(directory); return retval; }
void set_script(payment_address& address, const script_type& eval_script) { address.set(payment_address::script_version, bitcoin_short_hash(save_script(eval_script))); }
bool set_script(payment_address& address, const script& eval_script) { return address.set(payment_type::script_hash, generate_ripemd_hash(save_script(eval_script))); }