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