SHOWING: First 60
- Update changelog
- Update dependencies
- Update database schema version
```
Translations
------------
To translate [the docs](https://docs.ordinals.com) we use this
[mdBook i18n helper](https://github.com/google/mdbook-i18n-helpers).
So read through their [usage guide](https://github.com/google/mdbook-i18n-helpers/blob/main/i18n-helpers/USAGE.md)
to see the structure that translations should follow.
There are some other things to watch out for but feel free to just start a
translation and open a PR. Have a look at [this commit](https://github.com/ordinals/ord/commit/329f31bf6dac207dad001507dd6f18c87fdef355)
for an idea of what to do. A maintainer will also help you integrate it into our
build system.
To align your translated version of the Handbook with reference to commit
[#2427](https://github.com/ordinals/ord/pull/2426), here are some guiding
commands to assist you. It is assumed that your local environment is already
well-configured with [Python](https://www.python.org/),
[Mdbook](https://github.com/rust-lang/mdBook),
#44,989,489textof later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
#44,989,487textthe tests, or in your shell configuration.
We also try to follow a TDD (Test-Driven-Development) approach, which means we
use tests as a way to get visibility into the code. Tests have to run fast for that
reason so that the feedback loop between making a change, running the test and
seeing the result is small. To facilitate that we created a mocked Bitcoin Core
instance in [test-bitcoincore-rpc](./test-bitcoincore-rpc).
Syncing
-------
`ord` requires a synced `bitcoind` node with `-txindex` to build the index of
satoshi locations. `ord` communicates with `bitcoind` via RPC.
If `bitcoind` is run locally by the same user, without additional
configuration, `ord` should find it automatically by reading the `.cookie` file
from `bitcoind`'s datadir, and connecting using the default RPC port.
If `bitcoind` is not on mainnet, is not run by the same user, has a non-default
datadir, or a non-default port, you'll need to pass additional flags to `ord`.
See `ord --help` for details.
`bitcoind` RPC Authentication
-----------------------------
#44,989,486text
`ord` makes RPC calls to `bitcoind`, which usually requires a username and
password.
By default, `ord` looks a username and password in the cookie file created by
`bitcoind`.
The cookie file path can be configured using `--cookie-file`:
```
ord --cookie-file /path/to/cookie/file server
```
Alternatively, `ord` can be supplied with a username and password on the
command line:
```
ord --bitcoin-rpc-user foo --bitcoin-rpc-pass bar server
```
Using environment variables:
```
export ORD_BITCOIN_RPC_USER=foo
export ORD_BITCOIN_RPC_PASS=bar
ord server
```
Or in the config file:
```yaml
bitcoin_rpc_user: foo
bitcoin_rpc_pass: bar
```
Logging
--------
`ord` uses [env_logger](https://docs.rs/env_logger/latest/env_logger/). Set the
`RUST_LOG` environment variable in order to turn on logging. For example, run
the server and show `info`-level log messages and above:
```
$ RUST_LOG=info cargo run server
```
New Releases
------------
Release commit messages use the following template:
```
Release x.y.z
- Bump version: x.y.z → x.y.z
#44,989,470textcategories of tests: unit, integration and fuzz. Unit tests can usually be found at
the bottom of a file in a mod block called `tests`. If you add or modify a
function please also add a corresponding test. Integration tests try to test
end-to-end functionality by executing a subcommand of the binary. Those can be
found in the [tests](tests) directory. We don't have a lot of fuzzing but the
basic structure of how we do it can be found in the [fuzz](fuzz) directory.
We strongly recommend installing [just](https://github.com/casey/just) to make
running the tests easier. To run our CI test suite you would do:
```
just ci
```
This corresponds to the commands:
```
cargo fmt -- --check
cargo test --all
cargo test --all -- --ignored
```
Have a look at the [justfile](justfile) to see some more helpful recipes
(commands). Here are a couple more good ones:
```
just fmt
just fuzz
just doc
just watch ltest --all
```
If the tests are failing or hanging, you might need to increase the maximum
number of open files by running `ulimit -n 1024` in your shell before you run
#44,989,469textagostinelli 7485
conglutinin 7485
culverhouse 7485
nonsentient 7485
kleptocracy 7486
fitzharding 7487
gillenwater 7488
lichchhavis 7489
gemological 7490
nonparanoid 7491
corkscrewed 7496
dunelmensis 7497
mammillated 7497
ausgenommen 7501
concentrica 7501
capricornia 7503
excystation 7503
mangasarian 7503
neighboured 7503
avanguardia 7504
badenweiler 7504
broadleaves 7505
floxuridine 7505
institucion 7505
banyarwanda 7506
competentes 7507
biathanatos 7510
disziplinen 7511
azoospermic 7512
hottempered 7512
lampholders 7512
boringhieri 7514
diacetylene 7514
antecedente 7517
flunisolide 7517
neddermeyer 7519
benzylidene 7520
curvirostra 7521
angetroffen 7523
herengracht 7524
dittography 7527
disguisings 7528
micromixing 7528
macerations 7534
dranesville 7535
conversible 7537
homegardens 7538
nonreferred 7538
bradycardic 7540
lectureroom 7541
homogametic 7545
areopagites 7546
fluosilicic 7546
geophysique 7546
mertensiana 7546
hesperiidae 7547
confabulate 7549
freetraders 7549
headmanship 7550
bauernfeind 7552
contredanse 7554
#44,989,447texteasterfield 9853
germanizing 9855
montelukast 9857
interspaced 9862
antilocapra 9863
chelicerata 9863
metabasites 9867
evangelised 9869
magistrorum 9870
magnificant 9875
epigraphica 9881
laicization 9881
countercoup 9884
demagnetize 9884
liebenstein 9884
callitriche 9885
dendermonde 9887
hyacinthine 9894
isometrical 9895
calypsonian 9899
hereditatem 9899
connexional 9900
eisenbahnen 9902
haemothorax 9905
jardinieres 9906
nocturnally 9907
inflatables 9913
birchington 9914
einsteinium 9914
coccinellid 9921
homogenizes 9930
allensworth 9931
morrissette 9931
ldentifying 9934
compossible 9935
judaization 9939
algebraists 9942
charactered 9956
insolencies 9956
ghorbanifar 9957
aurantiacus 9962
autoerotism 9964
fisherwomen 9964
montgomerys 9964
halfmillion 9965
amerasinghe 9967
flaubertian 9972
emasculates 9973
compellence 9974
instructers 9975
metatextual 9976
mahalakshmi 9982
ausreichend 9983
diligencias 9986
laframboise 9988
noninvolved 9989
middendorff 9994
fortenbaugh 10000
concertedly 10003
castellucci 10005
chirurgeons 10008#44,989,446texterleichtert 6749
marchiennes 6749
neurotmesis 6749
caracteriza 6750
boutonneuse 6751
bonnemaison 6752
hemocyanins 6754
inculpating 6754
cardiopathy 6756
metaclasses 6758
geburtstage 6761
heteroclite 6761
baggenstoss 6762
fertilities 6763
ciceronians 6764
nonresearch 6764
carmichaels 6766
majorleague 6766
campesinado 6767
bukittinggi 6768
commersonii 6768
cannistraro 6769
geskiedenis 6769
distnbution 6770
frigatebird 6771
impenitency 6772
introduites 6772
aufzufassen 6774
multination 6775
downfaulted 6778
nondeprived 6780
innocentium 6781
malecontent 6781
motsvarande 6783
alpenstocks 6786
chatelaines 6786
invariables 6786
demodicosis 6787
mengenlehre 6787
motorischen 6789
latanoprost 6790
magistratum 6790
antijacobin 6794
bumiputeras 6795
enalaprilat 6795
heinzelmann 6795
nonfunction 6796
animadverts 6797
confessorum 6799
formulieren 6800
hermonthica 6800
bundestages 6803
guerneville 6803
kilmacduagh 6804
bannerstone 6807
condemnatio 6807
experiental 6808
hyperphagic 6808
checkerwork 6809
hospitalist 6810
mathematici 6810
#44,989,444textathanasians 6434
ferrichrome 6434
leptospirae 6434
hollenhorst 6435
chronologer 6436
chemoreflex 6439
intimidator 6441
ectosylvian 6442
commissives 6443
manducation 6444
microbursts 6444
musculaires 6447
mountcashel 6449
mediocriter 6452
dichlobenil 6453
alleghanian 6454
fullinwider 6455
changkufeng 6456
constellate 6457
inferieures 6457
martikainen 6457
fictionists 6458
hogglestock 6458
macrospores 6458
morgenblatt 6458
neopalatial 6458
linderstrom 6459
intrarectal 6461
doerflinger 6462
glaswegians 6462
lachrymalis 6463
microneedle 6465
mosscovered 6468
bordercolor 6469
gemeinsamer 6469
gondophares 6470
kohlbergian 6472
developnent 6473
indikatoren 6474
feasability 6476
hameenlinna 6476
cancioneros 6480
hausmannite 6480
neuropraxia 6480
diamictites 6481
lichtenthal 6481
comediennes 6482
minneconjou 6482
cheiroptera 6483
contraposed 6483
cyanophytes 6484
humanitatem 6488
modernistas 6488
agromyzidae 6489
arzobispado 6489
complaineth 6491
bargeboards 6492
montgommery 6492
cummerbunds 6493
fundamentis 6493
glycinergic 6494
#44,989,443text
server.assert_response_regex(
format!("/preview/{inscription_id}"),
StatusCode::OK,
format!(r".*<audio .*>\s*<source src=/content/{inscription_id}>.*"),
);
}
#[test]
fn font_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(1, 0, 0, inscription("font/ttf", "hello").to_witness())],
..Default::default()
});
let inscription_id = InscriptionId { txid, index: 0 };
server.mine_blocks(1);
server.assert_response_regex(
format!("/preview/{inscription_id}"),
StatusCode::OK,
format!(r".*src: url\(/content/{inscription_id}\).*"),
);
}
#[test]
fn pdf_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(
1,
0,
0,
inscription("application/pdf", "hello").to_witness(),#44,988,858text
let info = server.index.info().unwrap();
assert_eq!(info.transactions.len(), 1);
assert_eq!(info.transactions[0].starting_block_count, 0);
server.index.update().unwrap();
assert_eq!(server.index.statistic(crate::index::Statistic::Commits), 1);
let info = server.index.info().unwrap();
assert_eq!(info.transactions.len(), 1);
assert_eq!(info.transactions[0].starting_block_count, 0);
server.mine_blocks(1);
thread::sleep(Duration::from_millis(10));
server.index.update().unwrap();
assert_eq!(server.index.statistic(crate::index::Statistic::Commits), 2);
let info = server.index.info().unwrap();
assert_eq!(info.transactions.len(), 2);
assert_eq!(info.transactions[0].starting_block_count, 0);
assert_eq!(info.transactions[1].starting_block_count, 1);
assert!(
info.transactions[1].starting_timestamp - info.transactions[0].starting_timestamp >= 10
);
}
#[test]
fn outputs_traversed_are_tracked() {
let server = TestServer::new_with_sat_index();#44,988,831text
#[test]
fn unknown_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(1, 0, 0, inscription("text/foo", "hello").to_witness())],
..Default::default()
});
server.mine_blocks(1);
server.assert_response_csp(
format!("/preview/{}", InscriptionId { txid, index: 0 }),
StatusCode::OK,
"default-src 'self'",
fs::read_to_string("templates/preview-unknown.html").unwrap(),
);
}
#[test]
fn video_preview() {
let server = TestServer::new_with_regtest();
server.mine_blocks(1);
let txid = server.bitcoin_rpc_server.broadcast_tx(TransactionTemplate {
inputs: &[(1, 0, 0, inscription("video/webm", "hello").to_witness())],
..Default::default()
});
let inscription_id = InscriptionId { txid, index: 0 };
server.mine_blocks(1);
server.assert_response_regex(
format!("/preview/{inscription_id}"),
StatusCode::OK,#44,988,830text
#: src/bounty/3.md:35
msgid ""
"```\n"
"ord wallet sats --tsv frequency.tsv\n"
"```"
msgstr ""
"```\n"
"ord wallet sats --tsv frequency.tsv\n"
"```"
#: src/bounty/3.md:39
msgid ""
"This command requires the sat index, so `--index-sats` must be passed to ord "
"when first creating the index."
msgstr ""
"Este comando requer o índice sat (sat index), então `--index-sats` deve ser passado ao ord ao criar o índice pela primeira vez."
#: src/bounty/3.md:42
msgid "Part 0"
msgstr "Parte 0"
#: src/bounty/3.md:44
msgid "_Rare sats pair best with rare words._"
msgstr "_Sats raros combinam melhor com palavras raras._"
#: src/bounty/3.md:46
msgid ""
"The transaction that submits the UTXO containing the sat whose name appears "
"with the lowest number of occurrences in `frequency.tsv` shall be the winner "
"of part 0."
msgstr ""
"A transação que enviar o UTXO contendo o sat cujo nome apareça com menor número de ocorrências em `frequency.tsv` será a vencedora da parte 0."
#: src/bounty/3.md:50
msgid "Part 1"
msgstr "Parte 1"#44,988,436text
#: src/bounty/2.md:13
msgid ""
"Confirm that the submission address has not received transactions before "
"submitting your entry. Only the first successful submission will be rewarded."
msgstr ""
"Confirme se o endereço de entrega não recebeu transações antes de enviar sua inscrição. Somente o primeiro envio bem-sucedido será recompensado."
#: src/bounty/2.md:18
msgid "300,000 sats"
msgstr "300.000 sats"
#: src/bounty/2.md:23
msgid ""
"[`1Hyr94uypwWq5CQffaXHvwUMEyBPp3TUZH`](https://mempool.space/address/1Hyr94uypwWq5CQffaXHvwUMEyBPp3TUZH)"
msgstr ""
"[`1Hyr94uypwWq5CQffaXHvwUMEyBPp3TUZH`](https://mempool.space/address/1Hyr94uypwWq5CQffaXHvwUMEyBPp3TUZH)"
#: src/bounty/2.md:28
msgid ""
"Claimed by "
"[@utxoset](https://twitter.com/rodarmor/status/1582424455615172608)!"
msgstr ""
"Reivindicado por "
"[@utxoset](https://twitter.com/rodarmor/status/1582424455615172608)!"
#: src/bounty/3.md:1
msgid "Ordinal Bounty 3"
msgstr "Recompensa Ordinal 3"
#: src/bounty/3.md:7
msgid ""
"Ordinal bounty 3 has two parts, both of which are based on _ordinal names_. "
#44,988,434text"Ordinal names are a modified base-26 encoding of ordinal numbers. To avoid "
"locking short names inside the unspendable genesis block coinbase reward, "
"ordinal names get _shorter_ as the ordinal number gets _longer_. The name of "
"sat 0, the first sat to be mined is `nvtdijuwxlp` and the name of sat "
"2,099,999,997,689,999, the last sat to be mined, is `a`."
msgstr ""
"A Recompensa Ordinal 3 tem duas partes, ambas baseadas em _nomes ordinais_. "
"Os nomes ordinais são uma codificação modificada de base 26 de números ordinais. "
"Para evitar o bloqueio de nomes curtos dentro da recompensa da coinbase do bloco genesis, que não pode ser gasta, "
"os nomes ordinais ficam _mais curtos_ à medida que o número ordinal fica _mais longo_. O nome do sat 0, o primeiro sat a ser extraído é `nvtdijuwxlp` "
"e o nome do sat 2.099.999.997.689.999, o último sat a ser extraído, é `a`."
#: src/bounty/3.md:14
msgid ""
"The bounty is open for submissions until block 840000—the first block after "
"the fourth halvening. Submissions included in block 840000 or later will not "
#44,988,430text"Ordinal names are a modified base-26 encoding of ordinal numbers. To avoid "
"locking short names inside the unspendable genesis block coinbase reward, "
"ordinal names get _shorter_ as the ordinal number gets _longer_. The name of "
"sat 0, the first sat to be mined is `nvtdijuwxlp` and the name of sat "
"2,099,999,997,689,999, the last sat to be mined, is `a`."
msgstr ""
"A Recompensa Ordinal 3 tem duas partes, ambas baseadas em _nomes ordinais_. "
"Os nomes ordinais são uma codificação modificada de base 26 de números ordinais. "
"Para evitar o bloqueio de nomes curtos dentro da recompensa da coinbase do bloco genesis, que não pode ser gasta, "
"os nomes ordinais ficam _mais curtos_ à medida que o número ordinal fica _mais longo_. O nome do sat 0, o primeiro sat a ser extraído é `nvtdijuwxlp` "
"e o nome do sat 2.099.999.997.689.999, o último sat a ser extraído, é `a`."
#: src/bounty/3.md:14
msgid ""
"The bounty is open for submissions until block 840000—the first block after "
"the fourth halvening. Submissions included in block 840000 or later will not "
#44,988,427text"mempool.space!"
msgstr ""
"A carteira Sparrow não mostra uma transação/UTXO, mas posso ver em mempool.space!"
#: src/guides/collecting/sparrow-wallet.md:177
msgid ""
"Make sure that your wallet is connected to a bitcoin node. To validate this, "
"head into the `Preferences`\\-> `Server` settings, and click `Edit Existing "
"Connection`."
msgstr ""
"Certifique-se de que sua carteira esteja conectada a um nó bitcoin. Para validar isso, vá até `Preferences`\\-> configurações de `Server` e clique em `Edit Existing "
"Connection`."
#: src/guides/collecting/sparrow-wallet.md:179
msgid ""
msgstr ""
#: src/guides/collecting/sparrow-wallet.md:181
msgid ""
"From there you can select a node and click `Test Connection` to validate "
"that Sparrow is able to connect successfully."
msgstr ""
"A partir daí você pode selecionar um nó e clicar em `Test Connection` para validar se o Sparrow é capaz de se conectar com sucesso."
#: src/guides/collecting/sparrow-wallet.md:183
#44,988,122text
#: src/guides/reindexing.md:17
msgid "/home/alice/.local/share/ord"
msgstr "/home/alice/.local/share/ord"
#: src/guides/reindexing.md:18
msgid "macOS"
msgstr "macOS"
#: src/guides/reindexing.md:18
msgid "`$HOME`/Library/Application Support/ord"
msgstr "`$HOME`/Library/Application Support/ord"
#: src/guides/reindexing.md:18
msgid "/Users/Alice/Library/Application Support/ord"
msgstr "/Users/Alice/Library/Application Support/ord"
#: src/guides/reindexing.md:19
msgid "Windows"
msgstr "Windows"
#: src/guides/reindexing.md:19
msgid "`{FOLDERID_RoamingAppData}`\\\\ord"
msgstr "`{FOLDERID_RoamingAppData}`\\\\ord"
#: src/guides/reindexing.md:19
msgid "C:\\Users\\Alice\\AppData\\Roaming\\ord"
msgstr "C:\\Users\\Alice\\AppData\\Roaming\\ord"
#: src/guides/reindexing.md:21
msgid ""
"So to delete the database and reindex on MacOS you would have to run the "
"following commands in the terminal:"
msgstr ""
"Portanto, para deletar o banco de dados e reindexar no MacOS você teria que executar os seguintes comandos no terminal:"
#44,988,109text"unlawful content, and decide what moderation policy is appropriate for their "
"instance."
msgstr ""
"É de responsabilidade de cada indivíduo que executa uma instância do explorador de bloco ordinal compreender suas responsabilidades em relação ao conteúdo ilegal "
"e decidir qual política de moderação é apropriada para sua própria instância."
#: src/guides/moderation.md:13
msgid ""
"In order to prevent particular inscriptions from being displayed on an `ord` "
"instance, they can be included in a YAML config file, which is loaded with "
"the `--config` option."
msgstr ""
"Para evitar que inscrições específicas sejam exibidas em uma instância `ord`, elas podem ser incluídas em um arquivo de configuração YAML, que é carregado com a opção `--config`."
#: src/guides/moderation.md:17
msgid ""
"To hide inscriptions, first create a config file, with the inscription ID "
"you want to hide:"
msgstr ""
"Para ocultar inscrições, primeiro crie um arquivo de configuração, com o ID da inscrição que deseja ocultar:"
#: src/guides/moderation.md:20
#44,988,091text
#: src/guides/collecting/sparrow-wallet.md:136
msgid ""
"If you previously froze the UXTO you will need to right-click on it and "
"unfreeze it."
msgstr ""
"Se você congelou o UXTO anteriormente, precisará clicar com o botão direito nele e descongelá-lo."
#: src/guides/collecting/sparrow-wallet.md:138
msgid ""
"Select the UTXO you want to send, and ensure that is the _only_ UTXO is "
"selected. You should see `UTXOs 1/1` in the interface. Once you are sure "
"this is the case you can hit `Send Selected`."
msgstr ""
"Selecione o UTXO que deseja enviar e certifique-se de que _apenas_ aquele UTXO esteja selecionado. "
"Você deverá ver `UTXOs 1/1` na interface. Quando tiver certeza de que este é o caso, você pode clicar em `Send Selected`."
#: src/guides/collecting/sparrow-wallet.md:140
msgid ""
msgstr ""
#: src/guides/collecting/sparrow-wallet.md:142
msgid ""
"You will then be presented with the transaction construction interface. "
"There is a few things you need to check here to make sure that this is a "
#44,987,449textdmt-mint.nat#44,766,390tapdmt-mint.nat#44,766,388tapdmt-mint.nat#44,766,387tapdmt-mint.nat#44,766,386tapdmt-mint.nat#44,766,385tapdmt-mint.nat#44,766,381tapdmt-mint.nat#44,766,378tapdmt-mint.nat#44,766,375tapdmt-mint.nat#44,766,374tapdmt-mint.nat#44,766,371tapdmt-mint.nat#44,766,368tapdmt-mint.nat#44,766,365tapdmt-mint.nat#44,766,364tapdmt-mint.nat#44,766,361tapdmt-mint.nat#44,766,360tapdmt-mint.nat#44,766,358tap