Skip to content

Commit a1462c9

Browse files
committed
additional test sign tx
1 parent 56d8a2b commit a1462c9

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

src/tx.zig

+38
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,44 @@ test "signTx" {
381381
try std.testing.expectEqualSlices(u8, &expected_tx_raw, &tx_raw);
382382
}
383383

384+
test "signTxSequence" {
385+
const allocator = std.testing.allocator;
386+
const prevout = Output{ .txid = "7fba14cf89b33828d415a259371005dcf78f1872fb9a27428317190998aba527".*, .vout = 0, .amount = 100000000 };
387+
const input = try TxInput.init(allocator, prevout, "", 4294967293);
388+
defer input.deinit();
389+
var inputs = [1]TxInput{input};
390+
const scriptpubkey_hex = "001484ac03e34560097ebf22214c4c94311553e1b576".*;
391+
var scriptpubkey: [22]u8 = undefined;
392+
_ = try std.fmt.hexToBytes(&scriptpubkey, &scriptpubkey_hex);
393+
const output = try TxOutput.init(allocator, 99999000, &scriptpubkey);
394+
var outputs = [1]TxOutput{output};
395+
var tx = try createTx(allocator, &inputs, &outputs);
396+
defer tx.deinit();
397+
398+
const map_key: [72]u8 = "7fba14cf89b33828d415a259371005dcf78f1872fb9a27428317190998aba52700000000".*;
399+
const privkey_hex: [64]u8 = "90d8ee77d3a4e91f68c49e06607c274f35e8403d907aaf1ed697a6c3f3940924".*;
400+
var privkey: [32]u8 = undefined;
401+
_ = try std.fmt.hexToBytes(&privkey, &privkey_hex);
402+
var privkeys = std.AutoHashMap([72]u8, [32]u8).init(allocator);
403+
defer privkeys.deinit();
404+
try privkeys.put(map_key, privkey);
405+
406+
const pubkey = bip32.generatePublicKey(privkey);
407+
var pubkeys = std.AutoHashMap([72]u8, bip32.PublicKey).init(allocator);
408+
defer pubkeys.deinit();
409+
try pubkeys.put(map_key, pubkey);
410+
411+
try signTx(allocator, &tx, privkeys, pubkeys, nonceFnRfc6979);
412+
413+
const expected_raw_tx = "020000000001017fba14cf89b33828d415a259371005dcf78f1872fb9a27428317190998aba5270000000000fdffffff0118ddf5050000000016001484ac03e34560097ebf22214c4c94311553e1b57602483045022100fb95b36c2bb30eb89ac7239fa0268e6d099f2fd95ef9277ed12116499b62e899022000d4ce7a39fa4edc84aacb80785bc7d1510683fbd3edb975cc6cb2f1e8f138370121036289e37d0a17017896431dbdee2ec315d403d3bc1ed58c5dc126d5c72caa281400000000";
414+
var buffer: [192]u8 = undefined;
415+
try encodeTx(allocator, &buffer, tx, true);
416+
var signed_raw_tx_hex: [384]u8 = undefined;
417+
_ = try std.fmt.bufPrint(&signed_raw_tx_hex, "{x}", .{std.fmt.fmtSliceHexLower(&buffer)});
418+
419+
try std.testing.expectEqualStrings(expected_raw_tx, &signed_raw_tx_hex);
420+
}
421+
384422
pub fn decodeRawTx(allocator: std.mem.Allocator, tx_raw: []const u8) !Transaction {
385423
var bytes: []u8 = try allocator.alloc(u8, tx_raw.len / 2);
386424
_ = try std.fmt.hexToBytes(bytes, tx_raw);

0 commit comments

Comments
 (0)