token-transfer7,720,000,000.dmt-nat#71,899,125taptransfer100.pizza#71,391,585brc-20token-transfer7,720,000,000.dmt-nat#70,788,835taptoken-transfer7,720,000,000.dmt-nat#61,783,038taptoken-mint5.miner#46,143,690taptoken-mint5.miner#46,143,686taptoken-mint5.miner#46,143,677taptoken-mint5.miner#46,143,674taptoken-mint5.miner#46,143,671taptoken-mint5.miner#46,143,663taptoken-mint5.miner#46,143,659taptoken-mint5.miner#46,143,656taptoken-mint5.miner#46,143,653taptoken-mint5.miner#46,143,652taptoken-mint5.miner#46,143,642taptoken-mint5.miner#46,143,634taptoken-mint5.miner#46,143,622taptoken-mint5.miner#46,143,603taptoken-mint5.miner#46,143,595taptoken-mint5.miner#46,143,594taptoken-mint5.miner#46,143,561taptoken-mint5.miner#46,143,557taptoken-mint5.miner#46,143,552taptoken-mint5.miner#46,143,551tap- 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 "![](images/troubleshooting_01.png)" msgstr "![](images/troubleshooting_01.png)" #: 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 "![](images/sending_02.png)" msgstr "![](images/sending_02.png)" #: 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