title: '初探bigchaindb' date: '2023-08-24' tag: ['notes', 'bigchaindb', 'python']

設定bigchaindb本地節點

使用docker

  • pull image:docker pull bigchaindb/bigchaindb:all-in-one
  • run image:
docker run \
  --detach \
  --name bigchaindb \
  --publish 9984:9984 \
  --publish 9985:9985 \
  --publish 27017:27017 \
  --publish 26657:26657 \
  --volume $HOME/bigchaindb_docker/mongodb/data/db:/data/db \
  --volume $HOME/bigchaindb_docker/mongodb/data/configdb:/data/configdb \
  --volume $HOME/bigchaindb_docker/tendermint:/tendermint \
  bigchaindb/bigchaindb:all-in-one`

python 程式

  1. 設定節點
from bigchaindb_driver import BigchainDB
bdb_root_url = 'http://localhost:9984'
bdb = BigchainDB(bdb_root_url)
  1. 定義asset(資產)
game_boy_token = {
    'data': {
        'token_for': {
            'game_boy': {
                'serial_number': 'LR1235'
            }
        },
        'description': 'Time share token. Each token equals one hour of usage.',
    },
}
  1. 建立交易
prepared_token_tx = bdb.transactions.prepare(
    operation='CREATE',
    signers=alice.public_key,
    recipients=[([bob.public_key], 10)],
    asset=game_boy_token)
  1. 簽署交易
fulfilled_token_tx = bdb.transactions.fulfill(
    prepared_token_tx,
    private_keys=alice.private_key)
  1. 送出交易
txn_id = bdb.transactions.send_commit(fulfilled_token_tx)
txn_id

應該會看到以下

{'asset': {'data': {'description': 'Time share token. Each token equals one hour of usage.',
   'token_for': {'game_boy': {'serial_number': 'LR1235'}}}},
 'id': '98ac51b2c675269aa11baef335b8bd0ebcc57f5f0667e214801c2985cf4c2523',
 'inputs': [{'fulfillment': 'pGSAIOPXBFb8bPTDgBLdij1w4kGQgXqx71ufCbGIAT9XqDeNgUC8k44UIXeEDswVGq2dmD5V1njfa3_u-4NXbUXoZIgQRIZCFBf3_bGVAokaaUrZ7R3TtRxIqtw3OKszxEKc-ooC',
   'fulfills': None,
   'owners_before': ['GLPi9fyTGfcHzQe11Zu39q3yWvCDsPzJ5CKYbaieRtig']}],
 'metadata': None,
 'operation': 'CREATE',
 'outputs': [{'amount': '10',
   'condition': {'details': {'public_key': '3NAbk3h45m2Jw56trHaXm5jWP8Jxtz6ZK2WECyDgvEte',
     'type': 'ed25519-sha-256'},
    'uri': 'ni:///sha-256;MoPw1IV6D9k0fbiVr65BNRvmhnqmSrHZAw1EVGiALUA?fpt=ed25519-sha-256&cost=131072'},
   'public_keys': ['3NAbk3h45m2Jw56trHaXm5jWP8Jxtz6ZK2WECyDgvEte']}],
 'version': '2.0'}

ref

  • https://github.com/bigchaindb/bigchaindb-driver
  • https://docs.bigchaindb.com/projects/server/en/latest/appendices/all-in-one-bigchaindb.html
  • https://blog.bigchaindb.com/using-mongodb-to-query-bigchaindb-data-3fc651e0861b