Skip to content

Commit

Permalink
further simplify: Util.pubKeyToP2PKH()
Browse files Browse the repository at this point in the history
  • Loading branch information
xhliu committed Apr 1, 2021
1 parent 62045a2 commit a0527a8
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
9 changes: 3 additions & 6 deletions contracts/tictactoe.scrypt
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,16 @@ contract TicTacToe {
bytes outputs = b'';
if (this.won(board, play)) {
// winner takes all
Ripemd160 playerPKH = ripemd160(sha256(player));
bytes outputScript = Util.buildPublicKeyHashScript(playerPKH);
bytes outputScript = Util.pubKeyToP2PKH(player);
bytes output = Util.buildOutput(outputScript, amount);
outputs = output;
}
else if (this.full(board)) {
// draw: equally split, i.e., both outputs have the same amount
Ripemd160 alicePKH = ripemd160(sha256(this.alice));
bytes aliceScript = Util.buildPublicKeyHashScript(alicePKH);
bytes aliceScript = Util.pubKeyToP2PKH(this.alice);
bytes aliceOutput = Util.buildOutput(aliceScript, amount);

Ripemd160 bobPKH = ripemd160(sha256(this.bob));
bytes bobScript = Util.buildPublicKeyHashScript(bobPKH);
bytes bobScript = Util.pubKeyToP2PKH(this.bob);
bytes bobOutput = Util.buildOutput(bobScript, amount);

outputs = aliceOutput + bobOutput;
Expand Down
7 changes: 6 additions & 1 deletion contracts/util.scrypt
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,16 @@ library Util {
}

// build P2PKH script from public key hash
static function buildPublicKeyHashScript(Ripemd160 pubKeyHash): bytes {
static function pubKeyHashToP2PKH(Ripemd160 pubKeyHash): bytes {
return OpCode.OP_DUP + OpCode.OP_HASH160 + pack(Util.PubKeyHashLen) /* "OP_PUSHDATA0" */ +
pubKeyHash + OpCode.OP_EQUALVERIFY + OpCode.OP_CHECKSIG;
}

// build P2PKH script from public key
static function pubKeyToP2PKH(PubKey pubKey): bytes {
return this.pubKeyHashToP2PKH(hash160(pubKey));
}

// build a tx output from its script and satoshi amount
static function buildOutput(bytes outputScript, int outputSatoshis): bytes {
return num2bin(outputSatoshis, Util.OutputValueLen) + Util.writeVarint(outputScript);
Expand Down

0 comments on commit a0527a8

Please sign in to comment.