Zum Hauptinhalt springen

Transaktionsbefehle

Alle Transaktionsbefehle folgen dem Muster:

qorechaind tx <module> <command> [args] [flags]
hinweis

Setzen Sie --chain-id qorechain-vladi, um gegen das Live-Mainnet zu broadcasten, oder --chain-id qorechain-diana für das Testnet. Beide Netzwerke laufen auf der v3.2-Linie (Node-Release des Mainnets v3.2.1, Testnet v3.2.2; das aktuelle Release finden Sie in latest.json unter download.qore.host). Wird --chain-id weggelassen, verwendet der Client die chain-id aus Ihrer lokalen Client-Konfiguration.

Die folgenden allgemeinen Flags gelten für jeden tx-Unterbefehl:

FlagTypBeschreibung
--fromstringName oder Adresse des Signaturschlüssels
--chain-idstringChain-Kennung (Standard: aus der Client-Konfiguration)
--feesstringTransaktionsgebühr, z. B. 40000uqor
--gas-pricesstringGaspreis anstelle von --fees, z. B. 0.1uqor
--gasstringGas-Limit oder auto zur Schätzung (Standard 200000)
--gas-adjustmentfloatMultiplikator, der auf die auto-Schätzung angewendet wird (Standard 1)
--keyring-backendstringos, file, kwallet, pass, test oder memory
--nodestringRPC-Endpunkt (Standard tcp://localhost:26657)
--broadcast-modestringsync oder async
--generate-onlyboolDie unsignierte Transaktion ausgeben, statt sie zu signieren
-yboolBestätigungsabfrage überspringen

Gebühren und Gas​

Die Netzwerk-Gebührenuntergrenze beträgt 0.1 uqor pro Gas-Einheit (query feemarket params zeigt min_gas_price; die aktuelle Basisgebühr kann unter Last über die Untergrenze steigen, siehe query feemarket base-fee). Eine Transaktion wird abgelehnt, sofern nicht fee >= gas limit x gas price gilt; --fees 500uqor funktioniert daher nur bei einem Gas-Limit von höchstens 5,000 und schlägt bei jeder realen Transaktion fehl.

TransaktionEmpfohlenes --gasPassendes --fees
Hybrid signierte Überweisung, Delegation, Abstimmung, Claim40000040000uqor
Registrierung eines PQC-Schlüssels60000060000uqor
lightnode register30000030000uqor

Eine hybride Signatur fügt einer Transaktion etwa 4.7 KB hinzu, die mit 10 Gas pro Byte berechnet werden; das Standard---gas 200000 reicht daher nicht immer aus: Hybrid signierte Überweisungen im Mainnet haben zwischen etwa 160,000 und 240,000 Gas verbraucht. Setzen Sie --gas stets explizit zusammen mit --fees (oder --gas-prices).


Hybride Signatur ist auf dem Cosmos-Pfad erforderlich​

hybrid_signature_mode steht in beiden Netzwerken auf required (qorechaind query pqc hybrid-mode). Jede Transaktion auf dem Cosmos-Pfad muss neben der secp256k1-Signatur eine ML-DSA-87-Signatur (Dilithium-5) tragen; ein einfaches tx bank send ... -y wird abgelehnt. Die einzigen Ausnahmen sind die Registrierung und Migration von PQC-Schlüsseln (damit ein neues Konto seinen ersten Schlüssel registrieren kann) sowie tx slashing unjail für ein Konto ohne registrierten PQC-Schlüssel.

Jeder Befehl auf dieser Seite außer pqc register-key, pqc register-key-v2 und pqc migrate-key wird deshalb in zwei Schritten ausgeführt: Erstellen Sie die Transaktion mit --generate-only und signieren und broadcasten Sie sie dann mit tx pqc cosign:

qorechaind tx bank send mykey qor1recipient... 1000000uqor \
--gas 400000 --fees 40000uqor --chain-id qorechain-vladi \
--generate-only > tx.json

qorechaind tx pqc cosign tx.json --from mykey --pqc-key mypqc --chain-id qorechain-vladi

Der Schlüsselname mypqc steht für einen mit tx pqc gen-key erzeugten Schlüssel, der für das Konto registriert ist (siehe pqc). Verwenden Sie dafür das offizielle Release-Binary von download.qore.host: Ein aus dem öffentlichen Quellbaum gebautes Binary kann keine Dilithium-Signatur erzeugen oder anwenden (gen-key und cosign melden, dass sie den vollständigen Build benötigen). QoreX und die SDKs übernehmen dieselbe Signierung für Sie.


bank​

send​

Token von einem Konto auf ein anderes übertragen.

qorechaind tx bank send <from_key_or_address> <to_address> <amount> [flags]

Beispiel: qorechaind tx bank send mykey qor1recipient... 1000000uqor --gas 400000 --fees 40000uqor --chain-id qorechain-vladi --generate-only > tx.json, anschließend tx pqc cosign wie oben gezeigt. 1 QOR = 1,000,000 uqor.


staking​

create-validator​

Einen Validator aus einer JSON-Datei erstellen (die Flag-basierte Form wurde entfernt). Im Mainnet sind zusätzlich eine aktive validator_operator-Lizenz und ein registrierter PQC-Schlüssel erforderlich; siehe Running a Validator.

qorechaind tx staking create-validator validator.json \
--from mykey --gas 600000 --fees 60000uqor --chain-id qorechain-vladi \
--generate-only > tx.json

validator.json:

{
"pubkey": {"@type": "/cosmos.crypto.ed25519.PubKey", "key": "<base64 key from: qorechaind comet show-validator>"},
"amount": "100000000000uqor",
"moniker": "my-validator",
"identity": "",
"website": "",
"security": "",
"details": "",
"commission-rate": "0.10",
"commission-max-rate": "0.20",
"commission-max-change-rate": "0.01",
"min-self-delegation": "1"
}

edit-validator​

Beschreibung oder Provision eines bestehenden Validators bearbeiten.

qorechaind tx staking edit-validator --new-moniker "new-name" --website "https://example.org" --from mykey [flags]

Flags: --new-moniker, --website, --identity, --security-contact, --details, --commission-rate, --min-self-delegation. Weggelassene Felder bleiben unverändert.

delegate​

qorechaind tx staking delegate <validator_address> <amount> [flags]

redelegate​

qorechaind tx staking redelegate <src_validator> <dst_validator> <amount> [flags]

unbond​

qorechaind tx staking unbond <validator_address> <amount> [flags]

cancel-unbond​

Einen laufenden Unbonding-Eintrag abbrechen.

qorechaind tx staking cancel-unbond <validator_address> <amount> <creation_height> [flags]

slashing​

unjail​

Einen inhaftierten (jailed) Validator nach Ablauf der Jail-Dauer in das aktive Set zurückführen.

qorechaind tx slashing unjail --from mykey [flags]

distribution​

withdraw-all-rewards​

Alle ausstehenden Staking-Belohnungen abheben.

qorechaind tx distribution withdraw-all-rewards [flags]

withdraw-rewards​

Belohnungen von einem Validator abheben.

qorechaind tx distribution withdraw-rewards <validator_address> [flags]
FlagTypBeschreibung
--commissionboolZusätzlich die Provision abheben (Operator-Adressen von Validatoren)

gov​

submit-proposal​

Einen Governance-Vorschlag aus einer JSON-Datei mit messages, metadata, deposit, title, summary und optional expedited einreichen. Ein Grundgerüst erzeugen Sie mit qorechaind tx gov draft-proposal.

qorechaind tx gov submit-proposal <proposal_file.json> [flags]

vote​

qorechaind tx gov vote <proposal_id> <option> [flags]

Abstimmungsoptionen: yes, no, abstain, no_with_veto. Mit tx gov weighted-vote <proposal_id> yes=0.6,no=0.4 lässt sich eine Stimme aufteilen.

deposit​

qorechaind tx gov deposit <proposal_id> <amount> [flags]

pqc​

gen-key​

Einen Dilithium-5-Schlüssel (ML-DSA-87) erzeugen und unter <home>/pqc/<name>.dilithium speichern (Modus 0600, nicht verschlüsselt). Der öffentliche Schlüssel wird als Hex ausgegeben.

qorechaind tx pqc gen-key <name>

register-key​

Einen öffentlichen PQC-Schlüssel für Ihr Konto registrieren (Legacy-Befehl: der Algorithmus ist Dilithium-5). Wird nur mit dem klassischen Schlüssel signiert; dies ist die Bootstrap-Ausnahme.

qorechaind tx pqc register-key <pubkey_hex> <key_type> --from mykey --gas 600000 --fees 60000uqor --chain-id qorechain-vladi -y

key_type ist hybrid (empfohlen), pqc_only oder classical_only. Der 2,592 Byte große öffentliche Schlüssel macht die Registrierung teurer als eine Überweisung; deshalb ist das höhere Gas-Limit nötig.

register-key-v2​

Einen Schlüssel mit expliziter Algorithmusauswahl registrieren.

qorechaind tx pqc register-key-v2 <algorithm> <pubkey_hex> <key_type> --from mykey --gas 600000 --fees 60000uqor --chain-id qorechain-vladi -y

algorithm ist dilithium5 (oder 1) oder mlkem1024 (oder 2).

cosign​

Eine unsignierte Transaktion mit dem PQC-Schlüssel und dem klassischen Schlüssel des Kontos signieren und anschließend broadcasten.

qorechaind tx pqc cosign <unsigned_tx_file> --from <key> --pqc-key <name> --chain-id <id>
FlagBeschreibung
--pqc-keyName des mit gen-key oder recover-key erzeugten Schlüssels
--sign-bytesauto (Standard: fragt die Chain, welche Sign-Bytes-Form gilt), v1 oder v2
--generate-only / --offlineDie signierte Transaktion als JSON ausgeben, statt sie zu broadcasten; später mit tx broadcast absenden; --offline benötigt zusätzlich --account-number, --sequence und --sign-bytes v1|v2
--dry-runSimulieren und die Gas-Schätzung ausgeben

Beide Netzwerke haben das Upgrade eingespielt, das die hybride Verifikation auf die v2-Sign-Bytes umgestellt hat; die v1-Form wird abgelehnt.

migrate-key​

Den PQC-Schlüssel Ihres Kontos von einem Algorithmus auf einen anderen migrieren. Für Ihren aktuellen Algorithmus muss eine Migration aktiv sein (von der Governance gestartet); beide Schlüssel signieren die Migrations-Bytes.

qorechaind tx pqc migrate-key <new_algorithm> <old_pubkey_hex> <new_pubkey_hex> <old_sig_hex> <new_sig_hex> [flags]

recover-key​

Den ML-DSA-87-Schlüssel des Kontos aus seiner BIP-39-Mnemonic rekonstruieren (von stdin gelesen) und lokal speichern. Verwendet SHAKE-256("qorechain:pqc:v1|address|mnemonic").

echo "<mnemonic>" | qorechaind tx pqc recover-key <name> <address> [flags]
FlagTypBeschreibung
--derivationstringadapter (kanonisch, Standard) oder bridge (Legacy: SHAKE-256(mnemonic))

rotate-key​

Den ML-DSA-87-Schlüssel des Kontos innerhalb desselben Algorithmus rotieren. Liest die Mnemonic von stdin, signiert doppelt mit dem alten und dem neuen Schlüssel, cosigniert mit dem alten Schlüssel und broadcastet.

echo "<mnemonic>" | qorechaind tx pqc rotate-key --from mykey --old-derivation bridge --new-derivation adapter \
--gas 600000 --fees 60000uqor --chain-id qorechain-vladi
FlagTypBeschreibung
--old-derivationstringAbleitung des derzeit registrierten Schlüssels: bridge (Standard) oder adapter
--new-derivationstringAbleitung des neuen Schlüssels: adapter (Standard) oder bridge
--new-randomboolAuf einen frischen Zufallsschlüssel rotieren; erfordert --new-key-out
--new-key-outstringDen neuen privaten Schlüssel als <home>/pqc/<name>.dilithium speichern, bevor etwas gesendet wird
--sign-bytesstringauto (Standard), v1 oder v2

open-evm-window​

Der EVM-Pfad lässt eine Transaktion nur von einem Konto zu, das einen registrierten PQC-Schlüssel besitzt und ein offenes Autorisierungsfenster hat. Ein Fenster wird mit einer Nachricht auf dem Cosmos-Pfad geöffnet und trägt damit die PQC-Signatur, die eine Ethereum-Wallet nicht liefern kann. Innerhalb des Fensters funktionieren gewöhnliche MetaMask-Transaktionen unverändert.

qorechaind tx pqc open-evm-window <blocks> <max-txs> <max-value> --from mykey \
--gas 400000 --fees 40000uqor --chain-id qorechain-vladi --generate-only > w.json
qorechaind tx pqc cosign w.json --from mykey --pqc-key mypqc --chain-id qorechain-vladi
ArgumentGrenzeBedeutung
blocks1 bis 17,280Wie lange das Fenster offen bleibt, gerechnet ab dem Block, der es öffnet
max-txs1 bis 1,000Wie viele EVM-Transaktionen es zulässt
max-valuepositivZulässige Gesamtsumme, bestehend aus dem übertragenen Wert und der maximalen Gebühr, die jede Transaktion zahlen könnte; uqor oder qor, z. B. 1000qor

Das Öffnen eines Fensters ersetzt ein eventuell bestehendes. Prüfen Sie es mit qorechaind query pqc evm-window <address>.

close-evm-window​

Ihr Fenster sofort schließen, zum Beispiel wenn Sie vermuten, dass der klassische Schlüssel kompromittiert ist.

qorechaind tx pqc close-evm-window --from mykey --gas 400000 --fees 40000uqor --chain-id qorechain-vladi --generate-only > c.json
qorechaind tx pqc cosign c.json --from mykey --pqc-key mypqc --chain-id qorechain-vladi

lightnode​

qorechaind tx lightnode register <node_type> <version> [--capabilities <csv>] --from operator \
--gas 300000 --fees 30000uqor --chain-id qorechain-vladi --generate-only > register.json
qorechaind tx pqc cosign register.json --from operator --pqc-key <name> --chain-id qorechain-vladi

node_type ist sx oder ux. Die Registrierung erfordert eine aktive lightnode_operator-Lizenz, und die Registrierung für das Light-Node-Belohnungsprogramm ist noch nicht geöffnet. Weitere Befehle: tx lightnode heartbeat, tx lightnode claim-rewards, tx lightnode deregister. Siehe Light Node.


bridge​

Die Bridge ist nicht in Produktion: In beiden Netzwerken befindet sich jede konfigurierte Chain im Status pending, und es sind keine Bridge-Validatoren registriert (query bridge chains, query bridge validators).

withdraw​

qorechaind tx bridge withdraw <destination_chain> <destination_address> <asset> <amount> [flags]

deposit​

Von einer Quell-Chain per Bridge hereingeholte Assets gutschreiben. Trägt Validator-Signaturen (--validator-sigs, --pqc-commitment); es ist eine Nachricht für Bridge-Operatoren und nicht der Weg, auf dem ein Endnutzer eine Einzahlung startet.

qorechaind tx bridge deposit <source_chain> <source_tx_hash> <asset> <amount> [flags]

update-chain-config / set-verifier-bootstrap​

Administrativ (bridge_admin- oder qcb_bridge-Lizenz).

qorechaind tx bridge update-chain-config <chain_id> [--status active|paused|pending] [--verifier <kind>] [--contract <addr>] [--confirmations <n>] [--architecture <a>] [--lock-event-sig <hex>] [flags]
qorechaind tx bridge set-verifier-bootstrap <kind> <chain_id> [flags]

ibc-transfer​

qorechaind tx ibc-transfer transfer transfer <channel> <receiver> <amount> [flags]

Das erste transfer ist der Unterbefehl, das zweite der Quell-Port. Zum Zeitpunkt der Erstellung sind in keinem der beiden Netzwerke IBC-Kanäle geöffnet (query ibc channel channels).


rdk​

qorechaind tx rdk create-rollup <rollup_id> <profile> <stake_amount> [--vm evm|cosmwasm|svm|custom] [flags]
qorechaind tx rdk submit-batch <rollup_id> <batch_index> <state_root_hex> [flags]
qorechaind tx rdk challenge-batch <rollup_id> <batch_index> --proof <hex> [flags]
qorechaind tx rdk pause-rollup <rollup_id> <reason> [flags]
qorechaind tx rdk resume-rollup <rollup_id> [flags]
qorechaind tx rdk stop-rollup <rollup_id> [flags]
qorechaind tx rdk execute-withdrawal <rollup_id> <batch_index> <withdrawal_index> <recipient> <denom> <amount> --proof <hex,hex,...> [flags]

profile ist defi, gaming, nft, enterprise oder custom; stake_amount wird in uqor angegeben (das aktuelle Minimum steht in query rdk config). Die Voreinstellung des Profils liefert Settlement, Sequencer, DA und Gas-Modell; nur die VM lässt sich auf der Kommandozeile überschreiben. Einen Befehl finalize-batch gibt es nicht.


multilayer​

qorechaind tx multilayer register-sidechain <layer_id> <description> [--block-time-ms 2000] [--domains defi] [--max-tx 1000] [--min-validators 1] [--settlement-interval 100] [--vm-types evm] [flags]
qorechaind tx multilayer register-paychain <layer_id> <description> [--max-tx 5000] [--settlement-interval 50] [--base-fee-multiplier 0.01] [flags]
qorechaind tx multilayer anchor-state <layer_id> <layer_height> <state_root_hex> <pqc_agg_sig_hex> [flags]
qorechaind tx multilayer route-transaction <payload_hex> [--preferred-layer <id>] [--max-latency-ms 10000] [--max-fee 1000000] [flags]
qorechaind tx multilayer challenge-anchor <layer_id> <anchor_height> <fraud_proof_hex> <reason> [flags]
qorechaind tx multilayer update-layer-status <layer_id> <new_status> <reason> [flags]

new_status ist proposed, active, suspended oder decommissioned. update-layer-status ist im Mainnet durch den Circuit Breaker deaktiviert (siehe unten).


Derzeit deaktivierte oder nicht verfügbare Nachrichten​

Einige Befehle existieren im Binary, können in den Live-Netzwerken aber nicht erfolgreich sein:

BefehlGrund
tx wasm store, tx wasm instantiate, instantiate2Die Berechtigung zum Hochladen und Instanziieren ist in beiden Netzwerken Nobody, und die Nachrichtentypen stehen zudem auf der Circuit-Breaker-Liste
tx crossvm callIm Mainnet durch den Circuit Breaker deaktiviert
tx svm deploy-program, execute, create-accountDer SVM-Transaktionspfad ist netzwerkweit deaktiviert
tx abstractaccount create, register-authenticator, execute-cosmos, execute-evmDas Abstract-Account-Modul ist abgeschaltet (query abstractaccount config zeigt enabled: false)
tx rlconsensus *, tx amm pause-pool/resume-poolNachrichten der Governance-Autorität; stehen ebenfalls auf der Circuit-Breaker-Liste des Mainnets
tx license *Nur für die Autorität (Lizenzen werden von der Lizenzautorität des Netzwerks vergeben)

Die aktuelle Liste liefert qorechaind query circuit disabled-list.