SHOWING: First 60
set positional-arguments
watch +args='test':
cargo watch --clear --exec '{{args}}'
ci: clippy forbid
cargo fmt -- --check
cargo test --all
cargo test --all -- --ignored
forbid:
./bin/forbid
fmt:
cargo fmt --all
clippy:
cargo clippy --all --all-targets -- -D warnings
lclippy:
cargo lclippy --all --all-targets -- -D warnings
deploy branch chain domain:
ssh root@{{domain}} "mkdir -p deploy \
&& apt-get update --yes \
&& apt-get upgrade --yes \
&& apt-get install --yes git rsync"
rsync -avz deploy/checkout root@{{domain}}:deploy/checkout
ssh root@{{domain}} 'cd deploy && ./checkout {{branch}} {{chain}} {{domain}}'
deploy-all: deploy-testnet deploy-signet deploy-mainnet
deploy-mainnet branch="master": (deploy branch "main" "ordinals.net")
deploy-signet branch="master": (deploy branch "signet" "signet.ordinals.net")
deploy-testnet branch="master": (deploy branch "test" "testnet.ordinals.net")
deploy-ord-dev branch="master" chain="main" domain="ordinals-dev.com": (deploy branch chain domain)
#44,996,339text
save-ord-dev-state domain="ordinals-dev.com":
$EDITOR ./deploy/save-ord-dev-state
scp ./deploy/save-ord-dev-state root@{{domain}}:~
ssh root@{{domain}} "./save-ord-dev-state"
log unit="ord" domain="ordinals.net":
ssh root@{{domain}} 'journalctl -fu {{unit}}'
test-deploy:
ssh-keygen -f ~/.ssh/known_hosts -R 192.168.56.4
vagrant up
ssh-keyscan 192.168.56.4 >> ~/.ssh/known_hosts
rsync -avz \
--delete \
--exclude .git \
--exclude target \
--exclude .vagrant \
--exclude index.redb \
. [email protected]:ord
ssh [email protected] 'cd ord && ./deploy/setup'
time-tests:
cargo +nightly test -- -Z unstable-options --report-time
profile-tests:
cargo +nightly test -- -Z unstable-options --report-time \
| sed -n 's/^test \(.*\) ... ok <\(.*\)s>/\2 \1/p' | sort -n \
| tee test-times.txt
fuzz:
#!/usr/bin/env bash
set -euxo pipefail
cd fuzz
while true; do
cargo +nightly fuzz run transaction-builder -- -max_total_time=60
cargo +nightly fuzz run runestone-decipher -- -max_total_time=60
#44,996,192text }
pub(crate) fn request(&self, path: impl AsRef<str>) -> Response {
self.sync_server();
reqwest::blocking::get(self.url().join(path.as_ref()).unwrap()).unwrap()
}
pub(crate) fn json_request(&self, path: impl AsRef<str>) -> Response {
self.sync_server();
let client = reqwest::blocking::Client::new();
client
.get(self.url().join(path.as_ref()).unwrap())
.header(reqwest::header::ACCEPT, "application/json")
.send()
.unwrap()
}
pub(crate) fn sync_server(&self) {
let client = Client::new(&self.rpc_url, Auth::None).unwrap();
let chain_block_count = client.get_block_count().unwrap() + 1;
for i in 0.. {
let response = reqwest::blocking::get(self.url().join("/blockcount").unwrap()).unwrap();
assert_eq!(response.status(), StatusCode::OK);
if response.text().unwrap().parse::<u64>().unwrap() == chain_block_count {
break;
} else if i == 20 {
panic!("index failed to synchronize with chain");
}
thread::sleep(Duration::from_millis(25));
#44,995,319text "index_path": ".*\.redb",
"leaf_pages": \d+,
"metadata_bytes": \d+,
"outputs_traversed": 0,
"page_size": \d+,
"sat_ranges": 0,
"stored_bytes": \d+,
"tables": .*,
"transactions": \[
\{
"starting_block_count": 0,
"starting_timestamp": \d+
\}
\],
"tree_height": \d+,
"utxos_indexed": 0
\}
"#,
)
.run_and_extract_stdout();
}
#[test]
fn transactions() {
let rpc_server = test_bitcoincore_rpc::spawn();
let tempdir = TempDir::new().unwrap();
let index_path = tempdir.path().join("index.redb");
assert!(CommandBuilder::new(format!(
"--index {} index info --transactions",
index_path.display()
))
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Vec<TransactionsOutput>>()
.is_empty());
rpc_server.mine_blocks(10);
let output = CommandBuilder::new(format!(
"--index {} index info --transactions",
index_path.display()
))
.rpc_server(&rpc_server)
.run_and_deserialize_output::<Vec<TransactionsOutput>>();
assert_eq!(output[0].start, 0);
#44,992,290textcontent, the higher the fee that the inscription transaction must pay.
Inscription content is included in transaction witnesses, which receive the
witness discount. To calculate the approximate fee that an inscribe transaction
will pay, divide the content size by four and multiply by the fee rate.
Inscription transactions must be less than 400,000 weight units, or they will
not be relayed by Bitcoin Core. One byte of inscription content costs one
weight unit. Since an inscription transaction includes not just the inscription
content, limit inscription content to less than 400,000 weight units. 390,000
weight units should be safe.
Creating Inscriptions
---------------------
To create an inscription with the contents of `FILE`, run:
```
ord wallet inscribe --fee-rate FEE_RATE --file FILE
```
Ord will output two transactions IDs, one for the commit transaction, and one
for the reveal transaction, and the inscription ID. Inscription IDs are of the
form `TXIDiN`, where `TXID` is the transaction ID of the reveal transaction,#44,990,382textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"223","amt":"10000"}#39,375,221textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"223","amt":"10000"}#39,375,220textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"757","amt":"10000"}#39,375,219textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"263","amt":"10000"}#39,375,218textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"114","amt":"10000"}#39,375,217textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"363","amt":"10000"}#39,316,464textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"740","amt":"10000"}#39,316,463textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"552","amt":"10000"}#39,316,462textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"893","amt":"10000"}#39,316,461textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"748","amt":"10000"}#39,316,460textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"240","amt":"10000"}#39,316,459textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"302","amt":"10000"}#39,316,458textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"740","amt":"10000"}#39,316,457textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"352","amt":"10000"}#39,313,528textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"285","amt":"10000"}#39,313,527textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"141","amt":"10000"}#39,313,526textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"174","amt":"10000"}#39,313,525textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"214","amt":"10000"}#39,313,524textdata:,{"p":"brc-20","op":"mint","tick":"BTC","id":"164","amt":"10000"}#39,311,230text