コード例 #1
0
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;
}
コード例 #2
0
ファイル: transaction.cpp プロジェクト: arorts/libbitcoin
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());
}
コード例 #3
0
ファイル: rpm.c プロジェクト: Exocyst/packagemonkey
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;
}
コード例 #4
0
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;
}
コード例 #5
0
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);
}
コード例 #6
0
ファイル: gui.c プロジェクト: lukspdev/lppb
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));
}
コード例 #7
0
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);
}
コード例 #8
0
ファイル: arch.c プロジェクト: Exocyst/packagemonkey
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;
}
コード例 #9
0
		void set_script(payment_address& address, const script_type& eval_script)
		{
			address.set(payment_address::script_version,
				bitcoin_short_hash(save_script(eval_script)));
		}
コード例 #10
0
ファイル: address.cpp プロジェクト: vbuterin/libbitcoin
bool set_script(payment_address& address, const script& eval_script)
{
    return address.set(payment_type::script_hash,
        generate_ripemd_hash(save_script(eval_script)));
}