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.
| #!/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 |
| 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] |
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.
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()BIP: BIP-unhardened-multisig Title: Unhardened Derivation Paths for Multisignature Coordination Author: Armin Sabouri armin@team.casa Jameson Lopp jameson@team.casa Justin Moore justin@unchained.com Status: Draft Type: Informational Created: 2023-01-03 License: BSD-2-Clause
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:
| for commit in (git log --format='%H' HEAD~5..HEAD) | |
| git show $commit | sed 's/.. $/& <<<< HERE/' | |
| echo "=====" | |
| end | less |
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