Get regtest setup locally. I use user:pass creds. Cookies work too. For this guide I will assume you are using default ports.
cd liana-gui
cargo run
- For network, be sure to select regtest
OP_CAT enables the construction of covenants within Bitcoin script, albeit in a somewhat hacky manner. It requires the spender to place transaction elements on the stack, concatenate all the transaction elements, and then trick OP_CHECKSIG into verifying these elements. The spender accomplishes this by using a signature where both the private key and private nonce are set to 1.
I refere to this hack as the Poelstra trick and you can find more information here Understanding the Poelstra trick is the hard part of learning how to build a variant CSFS.
Elements Project's OP_CHECKSIGFROMSTACK (CSFS) verifies an ECDSA signature sig
over an arbitrary message m
against a public key pk
. Unlike Bitcoin's existing signature-checking opcodes, such as OP_CHECKSIG, which derive the message from the transaction executing the opcode, OP_CHECKSIGFROMSTACK reads an arbitrar
for commit in (git log --format='%H' HEAD~5..HEAD) | |
git show $commit | sed 's/.. $/& <<<< HERE/' | |
echo "=====" | |
end | less |
The foundation of this protocol hinges on Zero Knowledge Proofs (ZKPs), which encompass a diverse array of systems and types.
In essence, a zero-knowledge proof (ZKP) for general computation is a cryptographic framework that empowers an individual to execute an arbitrary program, using a combination of publicly accessible and confidential inputs, and convincingly demonstrate to others that the program accepted these inputs, all without divulging any additional information about its operations or the concealed inputs.
Provided we assume that a ZKP system exists and that a buyer (an entity seeking to initiate a peg-in) and a seller (a node aiding the buyer in pegging in) can engage in secure, authenticated communication, then we can construct a trustless atomic peg to a sidechain.
Key Assumptions:
BIP: BIP-unhardened-multisig Title: Unhardened Derivation Paths for Multisignature Coordination Author: Armin Sabouri [email protected] Jameson Lopp [email protected] Justin Moore [email protected] Status: Draft Type: Informational Created: 2023-01-03 License: BSD-2-Clause
LedgerHQ has laid the foundation for a PSBTv2 library, but it currently lacks some features and has issues with de/serialization. A complete Psbtv2 class can be found in my fork.
It is suggested to use PSBTv0 for all operations and only convert to v2 when communicating with the Ledger device. This can be achieved through utilizing BitcoinJS's excellent PSBTv0 library and utilizing an adapter function from v0 -> v2.
For exmaple if your're working with p2sh(p2wsh) script types, you might have something like:
export function convertPsbtv0ToV2(psbtv0: Psbt): PsbtV2 {
const psbtv2 = new PsbtV2()
Run nix-shell
in the root directory
Run poetry shell
in the root directory
cd core
make build_unix
./emu.py
If you are making changes to any python source code you shouldn't have to run the make command again.
def to_hd_node(base58DecodedXpub): | |
try: | |
return { | |
'version': base58DecodedXpub[0:8], | |
'depth': base58DecodedXpub[8:10], | |
'pfp': base58DecodedXpub[10:18], | |
'index': base58DecodedXpub[18:26], | |
'chaincode': base58DecodedXpub[26:90], | |
'key': base58DecodedXpub[90:156], | |
'checksum': base58DecodedXpub[156:164] |
#!/usr/bin/env bash | |
set -exo pipefail | |
decs_insts=$(aws --region us-east-1 ec2 describe-instances) | |
ssh_list=($(echo $decs_insts | jq -r --arg match "${1}" '.Reservations[]|select(.Instances[]|select((.Tags[]|select(.Key=="Name")|.Value)|match($match)))|select(.Instances[]|select(.State|select(.Name=="running")))|.Instances[].PrivateIpAddress' | tr '\r\n' ' ')) | |
split_list=() | |
for ssh_entry in "${ssh_list[@]:1}"; do |