ord
ord
ist ein Index-, Block-Explorer- und Befehlszeilen-Wallet. Es handelt sich um experimentelle Software ohne Garantie. Weitere Einzelheiten finden Sie unter LIZENZ.
Die Ordinaltheorie verleiht Satoshis einen numismatischen Wert, sodass sie gesammelt und als Kuriositäten gehandelt werden können.
Ordnungszahlen sind Seriennummern für Satoshis, die in der Reihenfolge zugewiesen werden, in der sie abgebaut werden, und über Transaktionen hinweg beibehalten werden.
Dokumentation und Anleitungen finden Sie in den Dokumenten.
Eine technische Beschreibung des Zuweisungs- und Übertragungsalgorithmus finden Sie im BIP.
Die aktuell priorisierten Themen finden Sie im Projektboard.
Treten Sie dem Discord-Server bei, um mit anderen Ordinal-Degenerierten zu chatten.
Ordinals ist Open Source und wird von der Community finanziert. Der derzeitige Hauptbetreuer von ord
ist Raphjaph. Raphs Arbeit bei ord
wird vollständig durch Spenden finanziert. Wenn Sie können, denken Sie bitte über eine Spende nach!
Die Spendenadresse lautet bc1qguzk63exy7h5uygg8m2tcenca094a8t464jfyvrmr0s6wkt74wls3zr5m3.
Diese Adresse ist 2 von 4 Multisig-Wallets mit Schlüsseln, die von Raphjaph, Erin, Rodarmor und Ordinally gehalten werden.
Die erhaltenen Bitcoins fließen in die Finanzierung der Wartung und Entwicklung von ord
sowie in die Hosting-Kosten für ordinals.com.
Vielen Dank für Ihre Spende!
ord
verlässt sich bei der Verwaltung privater Schlüssel und der Transaktionssignierung auf Bitcoin Core. Dies hat eine Reihe von Auswirkungen, die Sie verstehen müssen, um ord
Wallet-Befehle sicher verwenden zu können:
Bitcoin Core ist sich der Inschriften nicht bewusst und führt keine Sat-Kontrolle durch. Die Verwendung von bitcoin-cli
-Befehlen und RPC-Aufrufen mit ord
-Wallets kann zum Verlust von Inschriften führen.
ord wallet
-Befehle laden automatisch das durch die Option --name
angegebene ord
-Wallet, das standardmäßig „ord“ lautet. Beachten Sie, dass nach der Ausführung eines ord wallet
-Befehls möglicherweise ein ord
-Wallet geladen wird.
Da ord
Zugriff auf Ihre Bitcoin Core-Wallets hat, sollte ord
nicht mit Wallets verwendet werden, die eine wesentliche Menge an Geldern enthalten. Halten Sie Ordinal- und Kardinal-Wallets getrennt.
Alpha ord
-Wallets sind nicht mit Wallets kompatibel, die mit früheren Versionen von ord
erstellt wurden. Um zu migrieren, verwenden Sie ord wallet send
von der alten Wallet, um Sats und Inschriften an Adressen zu senden, die von der neuen Wallet mit ord wallet receive
generiert wurden.
ord
ist in Rust geschrieben und kann aus dem Quellcode erstellt werden. Vorgefertigte Binärdateien sind auf der Release-Seite verfügbar.
Sie können die neueste vorgefertigte Binärdatei über die Befehlszeile installieren mit:
curl --proto ' =https ' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s
Sobald ord
installiert ist, sollten Sie ord --version
in der Befehlszeile ausführen können.
Unter Linux erfordert ord
beim Erstellen aus dem Quellcode libssl-dev
.
Auf von Debian abgeleiteten Linux-Distributionen, einschließlich Ubuntu:
sudo apt-get install pkg-config libssl-dev build-essential
Auf von Red Hat abgeleiteten Linux-Distributionen:
yum install -y pkgconfig openssl-devel
yum groupinstall "Development Tools"
Sie benötigen außerdem Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Klonen Sie das ord
Repo:
git clone https://github.com/ordinals/ord.git
cd ord
Um eine bestimmte Version von ord
zu erstellen, checken Sie zunächst diese Version aus:
git checkout <VERSION>
Und schließlich, um tatsächlich ord
zu erstellen:
cargo build --release
Nach der Erstellung ist die ord
Binärdatei unter ./target/release/ord
zu finden.
ord
ist rustc
-Version 1.79.0 oder höher erforderlich. Führen Sie rustc --version
aus, um sicherzustellen, dass Sie über diese Version verfügen. Führen Sie rustup update
aus, um die neueste stabile Version zu erhalten.
Ein Docker-Image kann erstellt werden mit:
docker build -t ordinals/ord .
ord
ist in Homebrew verfügbar:
brew install ord
So erstellen Sie ein .deb
-Paket:
cargo install cargo-deb
cargo deb
Wenn Sie einen Beitrag leisten möchten, sollten Sie einige Dinge wissen. Wir legen großen Wert auf ordnungsgemäße Tests der Codebasis mit drei großen Testkategorien: Unit, Integration und Fuzz. Unit-Tests befinden sich normalerweise am Ende einer Datei in einem Mod-Block namens tests
. Wenn Sie eine Funktion hinzufügen oder ändern, fügen Sie bitte auch einen entsprechenden Test hinzu. Integrationstests versuchen, die End-to-End-Funktionalität zu testen, indem sie einen Unterbefehl der Binärdatei ausführen. Diese finden Sie im Tests-Verzeichnis. Wir haben nicht viel Fuzzing, aber die Grundstruktur, wie wir es machen, finden Sie im Fuzz-Verzeichnis.
Wir empfehlen die Installation dringend, um die Durchführung der Tests zu vereinfachen. Um unsere CI-Testsuite auszuführen, würden Sie Folgendes tun:
just ci
Dies entspricht den Befehlen:
cargo fmt -- --check
cargo test --all
cargo test --all -- --ignored
Schauen Sie sich die Datei justfile an, um weitere hilfreiche Rezepte (Befehle) zu sehen. Hier sind noch ein paar gute:
just fmt
just fuzz
just doc
just watch ltest --all
Wenn die Tests fehlschlagen oder hängen bleiben, müssen Sie möglicherweise die maximale Anzahl geöffneter Dateien erhöhen, indem Sie ulimit -n 1024
in Ihrer Shell ausführen, bevor Sie die Tests ausführen, oder in Ihrer Shell-Konfiguration.
Wir versuchen auch, einen TDD-Ansatz (Test-Driven-Development) zu verfolgen, was bedeutet, dass wir Tests verwenden, um Einblick in den Code zu erhalten. Aus diesem Grund müssen Tests schnell ablaufen, damit die Rückkopplungsschleife zwischen der Durchführung einer Änderung, der Durchführung des Tests und der Anzeige des Ergebnisses gering ist. Um dies zu erleichtern, haben wir in Mockcore eine simulierte Bitcoin Core-Instanz erstellt
ord
erfordert einen synchronisierten bitcoind
Knoten mit -txindex
um den Index der Satoshi-Standorte zu erstellen. ord
kommuniziert mit bitcoind
über RPC.
Wenn bitcoind
lokal von demselben Benutzer ohne zusätzliche Konfiguration ausgeführt wird, sollte ord
es automatisch finden, indem es die .cookie
Datei aus dem Datenverzeichnis von bitcoind
liest und eine Verbindung über den Standard-RPC-Port herstellt.
Wenn sich bitcoind
nicht im Mainnet befindet, nicht vom selben Benutzer ausgeführt wird, über ein nicht standardmäßiges Datenverzeichnis oder einen nicht standardmäßigen Port verfügt, müssen Sie zusätzliche Flags an ord
übergeben. Weitere Informationen finden Sie ord --help
.
bitcoind
RPC-Authentifizierung ord
führt RPC-Aufrufe an bitcoind
durch, wofür normalerweise ein Benutzername und ein Passwort erforderlich sind.
Standardmäßig sucht ord
in der von bitcoind
erstellten Cookie-Datei nach einem Benutzernamen und einem Passwort.
Der Cookie-Dateipfad kann mit --cookie-file
konfiguriert werden:
ord --cookie-file /path/to/cookie/file server
Alternativ kann ord
in der Befehlszeile mit einem Benutzernamen und einem Passwort angegeben werden:
ord --bitcoin-rpc-username foo --bitcoin-rpc-password bar server
Umgebungsvariablen verwenden:
export ORD_BITCOIN_RPC_USERNAME=foo
export ORD_BITCOIN_RPC_PASSWORD=bar
ord server
Oder in der Konfigurationsdatei:
bitcoin_rpc_username : foo
bitcoin_rpc_password : bar
ord
verwendet env_logger. Legen Sie die Umgebungsvariable RUST_LOG
fest, um die Protokollierung zu aktivieren. Führen Sie beispielsweise den Server aus und zeigen Sie Protokollmeldungen auf info
und höher an:
$ RUST_LOG=info cargo run server
Legen Sie die Umgebungsvariable RUST_BACKTRACE
fest, um den vollständigen Rust-Backtrace zu aktivieren. Führen Sie beispielsweise den Server aus und aktivieren Sie das Debuggen und die vollständige Rückverfolgung:
$ RUST_BACKTRACE=1 RUST_LOG=debug ord server
Release-Commit-Nachrichten verwenden die folgende Vorlage:
Release x.y.z
- Bump version: x.y.z → x.y.z
- Update changelog
- Update changelog contributor credits
- Update dependencies
Zum Übersetzen der Dokumente verwenden wir den mdBook i18n-Helfer.
Weitere Informationen finden Sie im Benutzerhandbuch zu mdbook-i18n-helpers.
Das Hinzufügen einer neuen Übersetzung ist etwas aufwändig. Beginnen Sie also gerne mit der Übersetzung und öffnen Sie eine Pull-Anfrage, auch wenn Ihre Übersetzung unvollständig ist.
Schauen Sie sich dieses Commit an, um ein Beispiel für das Hinzufügen einer neuen Übersetzung zu sehen. Ein Betreuer hilft Ihnen bei der Integration in unser Build-System.
So starten Sie eine neue Übersetzung:
Installieren Sie mdbook
, mdbook-i18n-helpers
und mdbook-linkcheck
:
cargo install mdbook mdbook-i18n-helpers mdbook-linkcheck
Erzeugen Sie eine neue pot
-Datei mit dem Namen messages.pot
:
MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot"}}'
mdbook build -d po
Führen Sie msgmerge
auf XX.po
aus, wobei XX
der zweibuchstabige ISO-639-Code für die Sprache ist, in die Sie übersetzen. Dadurch wird die po
Datei mit dem Text der neuesten englischen Version aktualisiert:
msgmerge --update po/XX.po po/messages.pot
Nicht übersetzte Abschnitte sind in XX.po
mit #, fuzzy
gekennzeichnet. Bearbeiten Sie die msgstr
-Zeichenfolge mit dem übersetzten Text.
Führen Sie den Befehl mdbook
aus, um die Dokumente neu zu erstellen. Für Chinesisch, dessen zweibuchstabiger ISO-639-Code zh
ist:
mdbook build docs -d build
MDBOOK_BOOK__LANGUAGE=zh mdbook build docs -d build/zh
mv docs/build/zh/html docs/build/html/zh
python3 -m http.server --directory docs/build/html --bind 127.0.0.1 8080
Wenn alles gut aussieht, schreiben Sie XX.po
fest und öffnen Sie eine Pull-Anfrage auf GitHub. Andere geänderte Dateien sollten im Pull-Request weggelassen werden.