Skip to content

Latest commit

 

History

History
395 lines (169 loc) · 11 KB

script_buf.md

File metadata and controls

395 lines (169 loc) · 11 KB

Module 0x4::script_buf

Struct ScriptBuf

#[data_struct]
struct ScriptBuf has copy, drop, store

Constants

const BITCOIN_PUBKEY_HASH_SIZE: u64 = 20;

const BITCOIN_PUBKEY_SIZE: u64 = 33;

const BITCOIN_SCRIPT_HASH_SIZE: u64 = 20;

const BITCOIN_X_ONLY_PUBKEY_SIZE: u64 = 32;

const ErrorInvalidKeySize: u64 = 1;

const ErrorInvalidPubkeyHash: u64 = 3;

const ErrorInvalidScriptHash: u64 = 4;

const ErrorNumberOverflow: u64 = 2;

const I64_MAX: u64 = 9223372036854775807;

Function empty

Function new

public fun new(bytes: vector<u8>): script_buf::ScriptBuf

Function single

Function new_p2pkh

public fun new_p2pkh(pubkey_hash: vector<u8>): script_buf::ScriptBuf

Function new_p2sh

public fun new_p2sh(script_hash: vector<u8>): script_buf::ScriptBuf

Function script_pubkey

Generates a script pubkey spending to this address.

Function match_script_pubkey

Returns true if the address creates a particular script

Function is_empty

public fun is_empty(self: &script_buf::ScriptBuf): bool

Function bytes

public fun bytes(self: &script_buf::ScriptBuf): &vector<u8>

Function into_bytes

public fun into_bytes(self: script_buf::ScriptBuf): vector<u8>

Function is_p2sh

Checks if the given script is a P2SH script.

public fun is_p2sh(self: &script_buf::ScriptBuf): bool

Function p2sh_script_hash

Get the script hash from a P2SH script. This function does not check if the script is a P2SH script, the caller must do that.

Function is_p2pkh

Checks if the given script is a P2PKH script.

public fun is_p2pkh(self: &script_buf::ScriptBuf): bool

Function p2pkh_pubkey_hash

Get the public key hash from a P2PKH script. This function does not check if the script is a P2PKH script, the caller must do that.

Function is_witness_program

public fun is_witness_program(self: &script_buf::ScriptBuf): bool

Function witness_program

Get the witness program from a witness program script.

Function is_op_return

Checks if the given script is an OP_RETURN script.

public fun is_op_return(self: &script_buf::ScriptBuf): bool

Function push_opcode

public fun push_opcode(self: &mut script_buf::ScriptBuf, opcode: u8)

Function push_data

public fun push_data(self: &mut script_buf::ScriptBuf, data: vector<u8>)

Function push_int

Adds instructions to push an integer onto the stack.

Integers are encoded as little-endian signed-magnitude numbers, but there are dedicated opcodes to push some small integers. Because there no i64 type in Move, we use u64 to represent the integer. The value over the I64_MAX will abort, we can support negative value in the future.

public fun push_int(self: &mut script_buf::ScriptBuf, n: u64)

Function push_key

Push a Bitcoin public key to the script

public fun push_key(self: &mut script_buf::ScriptBuf, key: vector<u8>)

Function push_x_only_key

Push a Bitcoin x-only public key to the script

public fun push_x_only_key(self: &mut script_buf::ScriptBuf, key: vector<u8>)