Skip to content

Commit

Permalink
Add ord wallet inscriptions (ordinals#917)
Browse files Browse the repository at this point in the history
  • Loading branch information
raphjaph authored Dec 8, 2022
1 parent 62e5077 commit 92fc15b
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/index/updater.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,12 +402,13 @@ impl Updater {
.map(|(satpoint, id)| (*satpoint, *id))
.collect();

for (_old_satpoint, inscription_id) in inscription_ids {
for (old_satpoint, inscription_id) in inscription_ids {
let new_satpoint = encode_satpoint(SatPoint {
outpoint: OutPoint { txid, vout: 0 },
offset: 0,
});

satpoint_to_inscription_id.remove(&old_satpoint)?;
satpoint_to_inscription_id.insert(&new_satpoint, &inscription_id)?;
inscription_id_to_satpoint.insert(&inscription_id, &new_satpoint)?;
}
Expand Down
3 changes: 3 additions & 0 deletions src/subcommand/wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use {super::*, transaction_builder::TransactionBuilder};

mod identify;
mod inscribe;
mod inscriptions;
mod receive;
mod send;
mod transaction_builder;
Expand Down Expand Up @@ -60,6 +61,7 @@ fn get_change_addresses(options: &Options, n: usize) -> Result<Vec<Address>> {
pub(crate) enum Wallet {
Identify(identify::Identify),
Inscribe(inscribe::Inscribe),
Inscriptions(inscriptions::Inscriptions),
Receive(receive::Receive),
Send(send::Send),
Utxos(utxos::Utxos),
Expand All @@ -70,6 +72,7 @@ impl Wallet {
match self {
Self::Identify(identify) => identify.run(options),
Self::Inscribe(inscribe) => inscribe.run(options),
Self::Inscriptions(inscriptions) => inscriptions.run(options),
Self::Receive(receive) => receive.run(options),
Self::Send(send) => send.run(options),
Self::Utxos(utxos) => utxos.run(options),
Expand Down
22 changes: 22 additions & 0 deletions src/subcommand/wallet/inscriptions.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
use super::*;

#[derive(Debug, Parser)]
pub(crate) struct Inscriptions {}

impl Inscriptions {
pub(crate) fn run(self, options: Options) -> Result {
let index = Index::open(&options)?;
index.update()?;

let inscriptions = index.get_inscriptions()?;
let utxos = list_utxos(&options)?;

for (satpoint, inscription_id) in inscriptions {
if utxos.contains_key(&satpoint.outpoint) {
println!("{}\t{}", inscription_id, satpoint);
}
}

Ok(())
}
}
50 changes: 50 additions & 0 deletions tests/wallet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -548,3 +548,53 @@ fn utxos() {
.expected_stdout(format!("{outpoint}\t{amount}\n"))
.run();
}

#[test]
fn inscriptions() {
let rpc_server = test_bitcoincore_rpc::spawn_with(Network::Signet, "ord-wallet");
let txid = rpc_server.mine_blocks(1)[0].txdata[0].txid();

let inscription_id = reveal_txid_from_inscribe_stdout(
&CommandBuilder::new(format!(
"--chain signet wallet inscribe --satpoint {txid}:0:0 --file hello.txt"
))
.write("hello.txt", "HELLOWORLD")
.rpc_server(&rpc_server)
.stdout_regex("commit\t[[:xdigit:]]{64}\nreveal\t[[:xdigit:]]{64}\n")
.run(),
);

rpc_server.mine_blocks(1);

CommandBuilder::new("--chain signet wallet inscriptions")
.rpc_server(&rpc_server)
.expected_stdout(format!("{inscription_id}\t{inscription_id}:0:0\n"))
.run();

let stdout = CommandBuilder::new("--chain signet wallet receive")
.rpc_server(&rpc_server)
.expected_exit_code(0)
.stdout_regex(".*")
.run();

let address = stdout.trim();

let stdout = CommandBuilder::new(format!(
"--chain signet wallet send {inscription_id} {address}"
))
.rpc_server(&rpc_server)
.expected_exit_code(0)
.stdout_regex(".*")
.run();

rpc_server.mine_blocks(1);

let txid = Txid::from_str(stdout.trim()).unwrap();

let outpoint = OutPoint::new(txid, 0);

CommandBuilder::new("--chain signet wallet inscriptions")
.rpc_server(&rpc_server)
.expected_stdout(format!("{inscription_id}\t{outpoint}:0\n"))
.run();
}

0 comments on commit 92fc15b

Please sign in to comment.