Hilfe · 38
Prüfen, dass die Informationen einer Partie nicht geändert wurden
Jede Fassung der Informationen einer Partie hat einen Fingerabdruck, der im Register erfasst ist. Jeder kann ihn aus den veröffentlichten Informationen neu berechnen und vergleichen, ohne Konto und ohne sich auf A-REX zu verlassen.
Wenn eine Partie erfasst wird, veröffentlicht A-REX ihre Informationen (Produkt, Menge, Partiecode, Herkunft, Daten) und erfasst einen Fingerabdruck davon im Register. Der Fingerabdruck ist ein kurzer Code, der aus dem genauen Inhalt berechnet wird: Ändert sich ein Buchstabe oder eine Ziffer, passt er nicht mehr. Ein Käufer, ein Prüfer oder eine Behörde kann so ohne Konto und ohne sich auf A-REX zu verlassen prüfen, dass die gelesenen Informationen die sind, die Ihr Unternehmen erfasst hat, und seit wann.
Der Fingerabdruck zeigt, dass die Informationen nach der Erfassung nicht geändert wurden. Er zeigt nicht, dass das Erklärte zutrifft: Das Register hält fest, wer was erklärt hat, und wann.
Was der Fingerabdruck abdeckt
- Jedes Feld der veröffentlichten Informationen der Partie, genau so, wie es erfasst wurde.
- Nur eine Fassung. Eine Korrektur veröffentlicht eine neue Fassung mit eigenem Fingerabdruck, der mit der Korrektur erfasst wird; die frühere Fassung und ihr Fingerabdruck bleiben erfasst und lassen sich weiter prüfen. Siehe Die Informationen einer Partie korrigieren.
- Nicht die Dateien von Zertifikaten: Jede hat ihren eigenen Fingerabdruck. Siehe Zertifikate.
Wo die Konsole ihn zeigt
- Öffnen Sie die Partie unter Partien.
- Öffnen Sie Technische Details unten auf der Seite der Partie. Der lange Wert, der mit
0xbeginnt, direkt über Öffentlichen Datensatz öffnen, ist der für die Partie erfasste Fingerabdruck. - Öffentlichen Datensatz öffnen öffnet die veröffentlichten Informationen, die jeder lesen kann. Ihre Webadresse endet mit demselben Fingerabdruck.
Eigentümer und Administratoren finden ihn außerdem unter Partien (technisch), auf der Seite jeder Partie.
Wie jeder ihn prüft
- Laden Sie die veröffentlichten Informationen von ihrer öffentlichen Adresse herunter, der Adresse, die Öffentlichen Datensatz öffnen öffnet. Sie enthalten keine personenbezogenen Daten.
- Bringen Sie sie in ihre Standardform, die kanonische Form nach RFC 8785: die Felder in fester Reihenfolge und ohne überflüssige Leerzeichen, sodass dieselben Informationen immer denselben Text ergeben.
- Berechnen Sie den Fingerabdruck dieses Textes mit dem Verfahren keccak-256.
- Vergleichen Sie ihn mit dem für die Partie erfassten Fingerabdruck. Derselbe Wert bedeutet, dass die Informationen die erfassten sind. Jeder andere Wert bedeutet, dass die Kopie vom Erfassten abweicht.
Ihre Entwickler oder Prüfer können das mit wenigen Zeilen Code tun; der nächste Abschnitt zeigt, wie.
Für Entwickler und Prüfer
Dieser Abschnitt verwendet Fachbegriffe. Der Fingerabdruck ist der metadataHash des Batches, unter
Technische Details als Metadaten-Hash angezeigt: der keccak256 der kanonischen Serialisierung
nach RFC 8785 (JCS) des Metadatendokuments, berechnet über seine UTF-8-Bytes (AREX-CORE §3.5). Das
Dokument wird unter GET /m/{unternehmen}/{metadataHash}.json der A-REX-API bereitgestellt, der uri
des Batches on-chain, sobald der Batch im Register ist (Entwürfe antworten mit 404). Die Antwort ist
der kanonische Text selbst, von jedem Origin aus lesbar.
In JavaScript (Node 18 oder neuer), mit dem Paket canonicalize (RFC 8785) und viem:
import canonicalize from 'canonicalize';
import { keccak256, toBytes } from 'viem';
const url = 'https://API_HOST/m/fazenda-boa-vista/0x5c1e…9a2b.json'; // Öffentlichen Datensatz öffnen
const recorded = '0x5c1e…9a2b'; // Metadaten-Hash der Partie
const doc = await (await fetch(url)).json();
const computed = keccak256(toBytes(canonicalize(doc)));
console.log(computed === recorded.toLowerCase() ? 'unverändert' : 'abweichend');
Mit ethers v6 lautet der letzte Schritt keccak256(toUtf8Bytes(canonicalize(doc))). Das
Kanonisieren zählt, wenn Sie eine umformatierte Kopie prüfen (eingerückt, Schlüssel umsortiert): Die
veröffentlichte Datei ist bereits kanonisch, ihre Bytes ergeben unverändert denselben Wert.
Auf der Kommandozeile, mit cast von Foundry:
curl -s "https://API_HOST/m/fazenda-boa-vista/0x5c1e…9a2b.json" -o lot.json
cast keccak "$(cat lot.json)"
Um mit dem Register selbst statt mit der Anzeige der Konsole zu vergleichen, lesen Sie den Batch aus dem Token-Contract (Token-Contract, Token-ID und Netzwerk unter Technische Details):
cast call "$TOKEN" "batchOf(uint256)((address,uint64,uint8,bytes32,bytes32,uint64,uint64,bytes32,bytes32,string))" "$TOKEN_ID" --rpc-url "$RPC_URL"
Der neunte Wert des Tupels ist metadataHash, der zehnte uri. Nach einer Korrektur liefert
batchOf die korrigierte Fassung, und jedes Ereignis BatchMetadataUpdated(id, metadataHash, uri)
hält eine Fassung fest. Dokumente erklären schemaVersion 1.0.0, 1.1.0 oder 1.2.0 (A-REX schreibt
1.2.0); die Prüfung ist für alle dieselbe. Das Dokument gegen sein Schema zu validieren ist ein eigener
Schritt: jeder Validator für JSON Schema 2020-12 mit schema/batch-metadata.schema.json des Standards,
oder POST /v1/metadata/validate mit einem API-Schlüssel.