Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Background

Smart contracts on the Internet Computer are referred to as canisters.

Developer Workflow

Developer Environment

Using Dogecoin Regtest

Dogecoin API Endpoints

Dogecoin Transactions

Generating a Dogecoin Address

TODO XC-468: this is just a dummy example to see how inserting code snippet is rendered

#![allow(unused)]
fn main() {
#[update]
pub async fn get_p2pkh_address() -> String {
    let ctx = BTC_CONTEXT.with(|ctx| ctx.get());

    // Unique derivation paths are used for every address type generated, to ensure
    // each address has its own unique key pair.
    let derivation_path = DerivationPath::p2pkh(0, 0);

    // Get the ECDSA public key of this smart contract at the given derivation path
    let public_key = get_ecdsa_public_key(&ctx, derivation_path.to_vec_u8_path()).await;

    // Convert the public key to the format used by the Bitcoin library
    let public_key = PublicKey::from_slice(&public_key).unwrap();

    // Generate a legacy P2PKH address from the public key.
    // The address encoding (Base58) depends on the network type.
    Address::p2pkh(public_key, ctx.bitcoin_network).to_string()
}
}

Creating Dogecoin Transactions

Signing Transactions

Submitting Transactions

Reading the Dogecoin State