Bắt đầu với Token gốc

Điều kiện tiên quyết

Phần này dành cho người dùng nâng cao thành thạo với giao diện dòng lệnh Cardano-node (CLI).

Phần này mô tả cách:

  • tạo tiền tệ và tài sản mới;
  • submit và gửi các giao dịch có chứa token đa tài sản (multi-asset);
  • gửi và nhận gói token;
  • quản lý địa chỉ và giá trị của bạn.

Lưu ý: Người dùng không cần tạo tài sản mới (“chủ sở hữu token”) sẽ có thể gửi và nhận token đa tài sản (multi-asset) hiện có bằng ví như Daedalus hoặc Yoroi và không yêu cầu sử dụng bất kỳ lệnh CLI nào.

Để bắt đầu, hãy đảm bảo rằng bạn đã quen với việc thiết lập và vận hành node Cardano. Ngoài ra, hãy xem hướng dẫn về cách khởi động node của bạn để gửi các lệnh. Bạn sẽ không cần phải thiết lập và bắt đầu một node tạo khối đầy đủ (“stake pool”), chỉ cần một node chuyển tiếp đơn giản hơn nhiều. Node này sẽ cần kết nối với mạng Cardano có khả năng xử lý native token (token gốc) (ví dụ: môi trường pre-production native token (token gốc) (PPE) hoặc Cardano Mainnet sau khi nó đã được nâng cấp).

Định cấu hình relay node bằng Cardano CLI

Tài liệu này mô tả cách tương tác với node từ dòng lệnh bash, nhưng cũng có thể tải xuống và chạy node dưới dạng docker image, điều này sẽ đòi hỏi ít cấu hình hệ thống hơn. Docker image là input-output/cardano-node – hãy đảm bảo rằng bạn có phiên bản mới nhất của node.

Để định cấu hình node relay giao tiếp với môi trường pre-production cho kỷ nguyên Mary, trước tiên hãy xây dựng và cài đặt node như được mô tả trong https://github.com/input-output-hk/cardano-node, sau đó thiết lập cấu hình:

Mkdir -p mary-ppe/config

cd mary-ppe

# download and save the configuration files to the config subdirectory

Sau đó, bạn có thể sử dụng lệnh sau từ thư mục mary-ppe để bắt đầu node relay. Lưu ý rằng bạn không cần phải định cấu hình và chạy node dưới dạng “stake pool” (node tạo khối):

export CARDANO_NODE_SOCKET_PATH=socket




cardano-node run --topology config/topology.json 

--database-path db --config config/config.json --port 3001

--socket-path "$CARDANO_NODE_SOCKET_PATH"

Các tệp cấu hình mới nhất có thể được tìm thấy tại đây. Bạn sẽ cần tải xuống tất cả các tệp được liên kết với cụm launchpad và sao chép chúng vào config thư mục con của bạn.

Khi bạn đã khởi động node, hãy để nó chạy trong cửa sổ đầu cuối của chính nó (hoặc chạy nó ở chế độ nền nếu bạn muốn).

Sử dụng Cardano CLI

Khi một node relay đã được thiết lập, cardano-cli lệnh có thể được sử dụng để tương tác với mạng như bình thường:

cd mary-ppe

cardano-cli ...

Lưu ý rằng hỗ trợ đa tài sản (multi-asset) được cung cấp như một phần của kỷ nguyên đồng thuận Mary, vì vậy nhiều lệnh sẽ yêu cầu cờ –mary-era:

cardano-cli ... --mary-era

Hiểu các giá trị

Giá trị Lovelace có thể được chỉ định theo hai cách:

  • ${quantity} lovelace (trong đó số lượng là một số nguyên có dấu)
  • ${quantity} (trong đó số lượng là một số nguyên có dấu (signed integer))

Giá trị cho các nội dung khác có thể được chỉ định như sau:

  • ${quantity} ${policyId}.${assetName}
  • ${quantity} ${policyId}

Trong đó quantity là số nguyên có dấu và policyId là policy ID được mã hóa hex [mã hash tập lệnh] và assetName là tên tài sản gồm chữ và số.

Cú pháp của giá trị multi-asset

Có cardano-cli có thể chỉ định giá trị multi-asset trong output giao dịch và khi đúc hoặc đốt token. Cú pháp cho những giá trị này đã được thiết kế để tương thích ngược với cú pháp ada-only trước đó (address+lovelace):

  • giá trị ada được định nghĩa là số nguyên (INT) lovelace, ví dụ: 42 lovelace
  • giá trị multi-asset có thể được định nghĩa là:
    • INT policyid.assetname, ví dụ 42 $MYPOLICY.myassetname
    • INT policyid, ví dụ: 42 $MYPOLICY (không có tên tài sản được chỉ định)
    • policyid.assetname, ví dụ: $MYPOLICY.myassetname (Điều này sẽ chỉ đúc một trong số myassetname)
  • Multi-asset có thể được kết hợp trong cùng một giá trị multi-asset bằng cách sử dụng + operator (toán tử), ví dụ:

100 lovelace + 42 $MYPOLICY.foo + -2 $MYPOLICY.bar + 10 lovelace

Điều chỉnh các giá trị riêng lẻ

Bất kỳ giá trị riêng lẻ nào cũng có thể bị phủ định bằng cách sử dụng – operator (toán tử) tiền tố. Ví dụ:

  • -42 $MYPOLICY
  • -72191 $MYPOLICY.foo
  • -100
  • -920 lovelace

Kết hợp các giá trị riêng lẻ

Các giá trị có thể được kết hợp bằng cách sử dụng toán tử nhị phân +. Ví dụ:

  • 42 lovelace + -1 (this would result in a Value of 41 lovelace)
  • 20 $MYPOLICY + 12 $MYPOLICY.foo + -2 $MYPOLICY.bar
  • 201 4$MYPOLICY.foo + 12 + -1 + 9 lovelace + 10 $MYPOLICY

Tạo giao dịch

Cú pháp native token có thể được sử dụng trong các ngữ cảnh sau:

  • cardano-cli transaction build-raw –tx-out=”…”
  • cardano-cli transaction build-raw –mint=”…”

Lệnh CLI cardano-cli transaction build-raw tạo phần thân giao dịch. Các –tx-out quy định cụ thể output giao dịch theo cách thông thường (Điều này được thể hiện dưới dạng địa chỉ + Lovelace, trong đó địa chỉ là một địa chỉ được mã hóa Bech32, và Lovelace là số tiền trong Lovelace), và các –mint quy định cụ thể tùy chọn các giá trị được đúc hoặc đốt/hủy.

Output giao dịch (TxOuts)

Cú pháp cho các giá trị TxOut đã được mở rộng để bao gồm các token đa tài sản (multi-asset). Các giá trị này có thể được chỉ định theo hai cách khác nhau:

  • $address $value
  • ${address}+${value}

(trong đó address là một địa chỉ Cardano và value là một giá trị). Biểu mẫu thứ hai được cung cấp để tương thích ngược với các phiên bản trước của node.

Để nhận token, bạn chỉ cần chỉ định bất kỳ địa chỉ nào. Không nhất thiết phải sử dụng các địa chỉ đặc biệt để giữ token đa tài sản (multi-asset).

Để kiểm tra các giá trị trong một địa chỉ, bạn cần xem giá trị UTxO bằng cách sử dụng:

cardano-cli shelley query utxo --mary-era

Điều này sẽ hiển thị nội dung của bất kỳ gói token nào mà bạn sở hữu. Bạn có thể chọn xem một địa chỉ cụ thể bằng cách sử dụng –address $ADDRESS tùy chọn:

cardano-cli shelley query utxo --address "$ADDRESS" --mary-era

Chính sách minting token (Token minting policies)

Trong Mary, các chính sách minting token được viết bằng các tập lệnh multi-signature (đa chữ kí). Điều này cho phép người kiểm soát tài sản thể hiện các điều kiện, chẳng hạn như yêu cầu các tổ chức phát hành token cụ thể đồng ý đúc token mới hoặc cấm đúc token sau một thời điểm nhất định (nếu khóa token cũng được sử dụng).

Dưới đây là một ví dụ về minting policy (chính sách minting) rất đơn giản, cấp quyền đúc token cho một khóa duy nhất (single key):

{

  "keyHash": "fe38d7...599",

  "type": "sig"

}

Minting policy (chính sách minting) này yêu cầu bất kỳ giao dịch nào đào token phải được ký ​​bởi khóa hash fe38d7…599. Có thể tìm thấy nhiều ví dụ liên quan hơn trong tài liệu về tập lệnh đơn giản multi-signature.

Ví dụ: đúc một native token (token gốc) mới

Tổng quát

Phần này mô tả cách đúc thủ công native token (token gốc) mới (‘melcoin’) bằng cách sử dụng cardano-cli và gửi giao dịch của token mới được đúc này đến một địa chỉ mới. Code được sử dụng xuyên suốt liên quan đến Mary Testnet. Đối với mainnet, thay thế –network-magic 3 bằng –mainnet trong tất cả các lệnh.

Điều kiện tiên quyết

  1. Tải xuống các tệp node và cấu hình cho Mary testnet (Launchpad) bằng cách sử dụng code này:
wget https://hydra.iohk.io/build/5266641/download/1/cardano-node-1.24.2-linux.tar.gz

tar xzvf cardano-node-1.24.2-linux.tar.gz

mkdir lpconfig && cd lpconfig

wget https://hydra.iohk.io/build/5102327/download/1/launchpad-config.json

wget https://hydra.iohk.io/build/5102327/download/1/launchpad-byron-genesis.json

wget https://hydra.iohk.io/build/5102327/download/1/launchpad-shelley-genesis.json

wget https://hydra.iohk.io/build/5102327/download/1/launchpad-topology.json

cd ..
  1. Chạy cardano-node:
./cardano-node run --topology ./lpconfig/launchpad-topology.json --database-path ./state-lp --port 3001

--config ./lpconfig/launchpad-config.json --socket-path ~/cardano-lp.socket




export CARDANO_NODE_SOCKET_PATH=~/cardano-lp.socket
  1. Tạo khóa xác minh và khóa ký (signing key):
cardano-cli address key-gen \

    --verification-key-file pay.vkey \

    --signing-key-file pay.skey

Code sẽ xuất ra một cái gì đó tương tự như sau:

$ cat pay.skey

{

    "type": "PaymentSigningKeyShelley_ed25519",

    "description": "Payment Signing Key",

    "cborHex": "5820aed07e0b1ddd946da278ffb1f671cc5b24c8453e6b47c24b0a6b15d818444fe8"

}

$ cat pay.vkey

{

    "type": "PaymentVerificationKeyShelley_ed25519",

    "description": "Payment Verification Key",

    "cborHex": "582031752dd50ffe7ed90ba136ea775dacd5113ff67d13001a25aac953f719aa1f92"

}
  1. Tạo địa chỉ thanh toán:
./cardano-cli address build \

--payment-verification-key-file pay.vkey \

--out-file pay.addr \

--testnet-magic 3

Code này tạo ra địa chỉ thanh toán sau:

$ cat pay.addr

addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz
  1. Kiểm tra số dư của địa chỉ thanh toán:
./cardano-cli query utxo --address addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz --testnet-magic 3 --mary-era

Nên phản hồi khi không có fund (ada):

TxHash                                 TxIx        Amount

--------------------------------------------------------------------------------------
  1. Thêm fund (ada) vào địa chỉ và kiểm tra lại:
./cardano-cli query utxo --address addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz --testnet-magic 3 --mary-era




                           TxHash                                 TxIx        Amount

--------------------------------------------------------------------------------------

b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414     0        1000000000 lovelace
  1. Xuất các thông số giao thức sang một tệp để sử dụng sau này:
cardano-cli  query protocol-parameters \

--mainnet \

--out-file protocol.json

Bắt đầu quá trình minting

  1. Tạo một policy (chính sách):
mkdir policy




cardano-cli address key-gen \

--verification-key-file policy/policy.vkey \

--signing-key-file policy/policy.skey







touch policy/policy.script && echo "" > policy/policy.script







echo "{" >> policy/policy.script

echo "  \"keyHash\": \"$(./cardano-cli address key-hash --payment-verification-key-file policy/policy.vkey)\"," >> policy/policy.script

echo "  \"type\": \"sig\"" >> policy/policy.script

echo "}" >> policy/policy.script




cat ./policy/policy.script

{

"keyHash": "5805823e303fb28231a736a3eb4420261bb42019dc3605dd83cccd04",

"type": "sig"

}

2. Mint asset (tài sản) mới:

$ ./cardano-cli transaction policyid --script-file ./policy/policy.script

328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b

Build the raw transaction

  1. Sử dụng code này để build raw transaction:
./cardano-cli transaction build-raw \

--mary-era \

--fee 0 \

--tx-in b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414#0 \

--tx-out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz+1000000000+"1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--mint="1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--out-file matx.raw




$ cat matx.raw

{

"type": "TxBodyMary",

"description": "",

"cborHex": "82a40081825820b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c41400018182581d6019fb71e45c300445430b35a7f395820df96554850c308bc29020cec7821a3b9a

ca00a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00020009a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00f6"

}

Tính minimum fee (phí tối thiểu)

Sử dụng code này để tính phí tối thiểu cần thiết cho giao dịch:

./cardano-cli transaction calculate-min-fee \

--tx-body-file matx.raw \

--tx-in-count 1 \

--tx-out-count 1 \

--witness-count 2 \

--testnet-magic 3 \

--protocol-params-file protocol.json




180109 Lovelace

Build lại giao dịch

Giao dịch bây giờ sẽ bao gồm phí:

./cardano-cli transaction build-raw \

--mary-era \

--fee 180109 \

--tx-in b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c414#0 \

--tx-out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz+999819891+"1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--mint="1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--out-file matx.raw




$ cat matx.raw

{

"type": "TxBodyMary",

"description": "",

"cborHex": "82a40081825820b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c41400018182581d6019fb71e45c300445430b35a7f3958

20df96554850c308bc29020cec7821a3b980a73a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00021a0002bf8d09a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00f6"

}

Ký giao dịch:

./cardano-cli transaction sign \

--signing-key-file pay.skey \

--signing-key-file policy/policy.skey \

--script-file policy/policy.script \

--testnet-magic 3 \

--tx-body-file matx.raw \

--out-file matx.signed




$ cat matx.signed

{

"type": "Tx MaryEra",

"description": "",

"cborHex": "83a40081825820b1ddb0347fed2aecc7f00caabaaf2634f8e2d17541f6237bbed78e2092e1c41400018182581d6019fb71e45c300445430b35a7f395820df96554850c308bc29020cec7821a3b980a73a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00021a0002bf8d09a1581c328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47ba1476d656c636f696e1a3b9aca00a2008282582031752dd50ffe7ed90ba136ea775dacd5113ff67d13001a25aac953f719aa1f9258406c8639a645fabe8f040e1bc4d9aff6db25ad98aead2f5558f322087430ce3896e44fadb18d2d0fec9302c8a36a8a66653df6c181700dbdf5c2df2f1af4c4ab048258206829bde3df4b212def84a4d8c14aa5232356aa53395cbdc575fa01fac167439a58407d3171701eabd7e118e45beb9f23ac95b5a73ec3de0449917a27e18106e554473247978a8b02f9edbe489940047ce41f1922f93042d3157b4a5146692e848c0701818200581c5805823e303fb28231a736a3eb4420261bb42019dc3605dd83cccd04f6"

}

Gửi giao dịch:

./cardano-cli transaction submit --tx-file  matx.signed --testnet-magic 3

Không có phản hồi, đó là kết quả mong đợi. Kiểm tra Utxo cho

addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz

./cardano-cli query utxo --address addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz --testnet-magic 3 --mary-era




TxHash                                 TxIx        Amount

--------------------------------------------------------------------------------------

fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63     0        999821915 lovelace + 1000000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin

Gửi native asset (tài sản gốc) mới đến một địa chỉ khác

  1. Tạo địa chỉ người nhận:

Đầu tiên, chúng ta cần tạo một địa chỉ để gửi tài sản mới được đúc tới.

mkdir recipient
  1. Tạo cặp khóa:
cardano-cli address key-gen \

--verification-key-file recipient/recipientpay.vkey \

--signing-key-file recipient/recipientpay.skey
  1. Tìm địa chỉ thanh toán:
./cardano-cli address build \

--payment-verification-key-file recipient/recipientpay.vkey \

--out-file recipient/recipientpay.addr \

--testnet-magic 3




$ cat recipient/recipientpay.addr

addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz
  1. Gửi 1 melcoin đến địa chỉ người nhận:
./cardano-cli transaction build-raw \

--mary-era \

--fee 0 \

--tx-in fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63#0 \

--tx-out addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz+10000000+"1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--tx-out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz+999821915+"999000000 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--out-file rec_matx.raw

5. Tính minimum fee (phí tối thiểu).

Sử dụng code này để tính phí tối thiểu cho giao dịch:

./cardano-cli transaction calculate-min-fee \

--tx-body-file rec_matx.raw \

--tx-in-count 1 \

--tx-out-count 2 \

--witness-count 1 \

--testnet-magic 3 \

--protocol-params-file protocol.json




178393 Lovelace




./cardano-cli transaction build-raw \

--mary-era \

--fee 178393 \

--tx-in fd0790f3984348f65ee22f35480b873b4eb9862065514f3e3a9c0f04d0a6ad63#0 \

--tx-out addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz+10000000+"1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--tx-out addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz+989643522+"999999999 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin" \

--out-file rec_matx.raw

Ký giao dịch

Ký giao dịch bằng các khóa đã tạo trước đó:

./cardano-cli transaction sign \

--signing-key-file pay.skey \

--testnet-magic 3 \

--tx-body-file rec_matx.raw \

--out-file rec_matx.signed

Gửi giao dịch

Gửi giao dịch đến chuỗi:

./cardano-cli transaction submit --tx-file  rec_matx.signed --testnet-magic 3

Lưu ý rằng chúng tôi phải gửi hơn 1000000 Lovelace trong giao dịch. Minimum value (giá trị tối thiểu) này được chỉ định trong tệp cấu hình:

$ cat lpconfig/launchpad-shelley-genesis.json | grep minUTxOValue

"minUTxOValue": 1000000,

Kiểm tra UTXO cho địa chỉ addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz:

./cardano-cli query utxo --address addr_test1vp8s8zu6mr73nvlsjf935k0a38n8xvp3fptkyz2vl8pserqkcx5yz --testnet-magic 3 --mary-era




TxHash                                 TxIx        Amount

--------------------------------------------------------------------------------------

f90b8457a2cf6a1aba9c0001ae2c7084f653083c6108826115a0a64e862333a3     0        10000000 lovelace + 1 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin

Địa chỉ người nhận mà chúng tôi đã tạo hiện có 10000000 Lovelace và 1 melcoin.

Kiểm tra UTXO cho địa chỉ addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz:

./cardano-cli query utxo --address addr_test1vqvlku0ytscqg32rpv660uu4sgxlje25s5xrpz7zjqsva3c8pfckz --testnet-magic 3 --mary-era
                           TxHash                                 TxIx        Amount
--------------------------------------------------------------------------------------
f90b8457a2cf6a1aba9c0001ae2c7084f653083c6108826115a0a64e862333a3     1        989643522 lovelace + 999999999 328a60495759e0d8e244eca5b85b2467d142c8a755d6cd0592dff47b.melcoin

Địa chỉ người gửi hiện có 989643522 Lovelace và 999999999 melcoin.

Gửi giao dịch

Trước khi gửi giao dịch vào mạng, nó cần phải được ký. Chúng tôi cần 2 key một để gửi input $UTXO và một để đáp ứng minting policy (chính sách minting):

SPENDING_KEY=...

MINTING_KEY=...

TX_BODY_FILE=...

TX_FILE=...




cardano-cli transaction sign \

--signing-key-file "$SPENDING_KEY" \

--signing-key-file "$MINTING_KEY" \

--script-file "$SCRIPT" \

--testnet-magic 3 \

--tx-body-file  "$TX_BODY_FILE" \

--out-file      "$TX_FILE"

Đây, $SPENDING_KEY là khóa cho phép chi tiêu từ $UTXO và $MINTING_KEY là khóa hash thành giá trị được chỉ định trong $SCRIPT.

Để gửi một giao dịch đến mạng, hãy sử dụng lệnh sau:

cardano-cli transaction submit --tx-file  "$TX_FILE" --testnet-magic 3

Các token mới được đúc sẽ xuất hiện trong UTxO và có thể được kiểm tra bằng cách:

cardano-cli query utxo --mary-era --testnet-magic 3

Output tương ứng hiển thị các loại tài sản khác nhau được nhúng trong UTxO:

TxHash         TxIx        Amount







-----------------------------------------------------------------







377eab...ad7    0       500000000 lovelace + 5 1cc8a9...a25.couttscoin

377eab...ad7    1       500000000 lovelace

Sau khi token được đúc, chúng có thể được giao tiếp bằng các giao dịch thông thường mà không cần sử dụng trường –mint. Lưu ý rằng để hợp lệ, một giao dịch phải được cân bằng và bạn cũng phải có giá trị tối thiểu (minimum value) của lovelace trong mỗi output giao dịch.

Chuyển token

Bất kỳ chủ sở hữu token nào cũng có thể gửi token giống như ada. Có một lưu ý: mọi output giao dịch phải chứa một số ada. Điều này là do có minimum value (giá trị tối thiểu) của ada cần thiết cho mỗi output giao dịch. Giá trị này được cung cấp bởi một tham số giao thức. Đặc biệt, không thể chỉ gửi token đa tài sản (multi-asset) trong một giao dịch, vì một số ada luôn cần được bao gồm trong mỗi output.

Ví dụ: một số couttscoin token có thể được gửi bằng các lệnh sau:

TXID=$(cardano-cli transaction txid --tx-body-file "$TX_BODY_FILE")

TX_BODY_FILE_1=...

TX_FILE_1=...




cardano-cli transaction build-raw \

--mary-era \

--fee 0 \

--tx-in "$TXID"#0 \

--tx-out="$ADDR+$LOVELACE+5 $POLICYID.couttscoin" \

--out-file "$TX_BODY_FILE_1"




cardano-cli transaction sign \

--signing-key-file "$SPENDING_KEY" \

--testnet-magic 3 \

--tx-body-file  "$TX_BODY_FILE_1" \

--out-file      "$TX_FILE_1"




cardano-cli transaction submit --tx-file "$TX_FILE_1" --testnet-magic 3

Mua và chi tiêu token

Người nắm giữ token “mua” token từ một công ty phát hành token. Điều này thường liên quan đến việc gửi một số ada đến một địa chỉ cụ thể đã được thiết lập bởi nhà phát hành token và thông báo cho nhà phát hành token về địa chỉ nơi token sẽ được gửi. Nhà phát hành token sau đó sẽ thiết lập một giao dịch sẽ chuyển token multi-asset (đa tài sản) đến địa chỉ được chỉ định.

Các token đã được phát hành cho chủ sở hữu token có thể được “chi tiêu” bằng cách trả lại chúng cho công ty phát hành token (tức là bằng cách đổi các token). Điều này được thực hiện bằng cách sử dụng một giao dịch bình thường. Nhà phát hành token sau đó sẽ cung cấp cho chủ sở hữu token đối tượng đã thỏa thuận để đổi lại (có thể là một vật phẩm có giá trị, một dịch vụ, một loại token khác, một số ada, v.v.).

cardano-cli transaction build-raw ... --out-file txbody




cardano-cli transaction sign ... --tx-body-file txbody --out-file tx




cardano-cli transaction submit ... --tx-file tx

Phá hủy (đốt) token

Tổ chức phát hành token có thể phá hủy token theo policy (chính sách) token bằng cách cung cấp giá trị âm trong trường –mint. Điều đó cho phép có được các token trong mục nhập UTxO trong input của một giao dịch mà không cần thêm chúng vào một trong các output, phá hủy chúng một cách hiệu quả. Ví dụ: các token được tạo trong phần trước có thể bị hủy như sau:

TXID1=$(cardano-cli transaction txid --tx-body-file "$TX_BODY_FILE_1")

TX_BODY_FILE_2=...

TX_FILE_2=...




cardano-cli transaction build-raw \

--mary-era \

--fee 0 \

--tx-in "$TXID1"#0 \

--tx-out="$ADDR+$LOVELACE" \

--mint="-5 $POLICYID.couttscoin" \

--out-file "$TX_BODY_FILE_2"




cardano-cli transaction sign \

--signing-key-file "$SPENDING_KEY" \

--signing-key-file "$MINTING_KEY" \

--script-file "$SCRIPT" \




--testnet-magic 3 \

--tx-body-file  "$TX_BODY_FILE_2" \

--out-file      "TX_FILE_2"




cardano-cli transaction submit --tx-file  "$TX_FILE_2" --testnet-magic 3

Lưu ý: Việc hủy token yêu cầu cả thông tin xác thực thanh toán để sử dụng mục nhập UTxO với token  thông tin xác thực cho tập lệnh minting policy.