Skip to content

Latest commit

 

History

History
44 lines (31 loc) · 1.81 KB

File metadata and controls

44 lines (31 loc) · 1.81 KB

Example mock-tx

We can download a transaction from the network and execute it locally. To download a transaction, use ckb-cli:

$ ckb-cli --url https://mainnet.ckbapp.dev/rpc mock-tx dump --tx-hash 0x5f0a4162622daa0e50b2cf8f49bc6ece22d1458d96fc12a094d6f074d6adbb55 --output-file mock_tx.json

You can execute the lock script or type script in the transaction:

$ ckb-debugger --tx-file mock_tx.json --cell-index 0 --cell-type input --script-group-type lock

Run result: 0
Total cycles consumed: 1697297(1.6M)
Transfer cycles: 12680(12.4K), running cycles: 1684617(1.6M)

The option --bin gives ckb-debugger a chance to "replace" the script, We try to replace the running code in the transaction above with a new version of the lock.

// always_failure.c
int main() {
    return 1;
}
$ ckb-debugger --tx-file mock_tx.json --cell-index 0 --cell-type input --script-group-type lock --bin always_failure

Run result: 1
Total cycles consumed: 1706(1.7K)
Transfer cycles: 764, running cycles: 942

In addition to debugging transactions that have been committed to the chain, you can also debug transactions that are not committed to the chain (including unsent transactions and transactions that failed to be committed to the chain).

To do this, we first need to prepare a transaction in json format, the file content is the same as the payload of json rpc send_transaction.

$ ckb-cli --url https://mainnet.ckbapp.dev/rpc mock-tx dump --tx-file mock_raw_tx.json --output-file mock_tx.json

In the above command, we use --tx-file mock_raw_tx.json to specify a transaction, which is equivalent to --tx-hash 0x5f0a4162622daa0e50b2cf8f49bc6ece22d1458d96fc12a094d6f074d6adbb55.