SubscribeTransactions - 订阅交易事件
SubscribeTransactions创建一个从服务端到客户端的单向流来实时发送新出现的 钱包相关的交易。
gRPC请求 - GetTransactionsRequest
无字段。
gRPC响应 - Transaction (Streaming)
字段如下:
- tx_hash:交易哈希,字符串
- amount:交易数量,int64,单位:satoshi
- num_confirmations:确认数,int32
- block_hash:交易所在的区块哈希,string
- block_height:交易所在的区块高度,int32
- time_stamp:交易时间戳,int64
- total_fees:交易手续费,int64
- dest_addresses:交易目标地址,字符串数组
- raw_tx_hex:交易的16进制字符串表示
示例代码
Python示例代码
>>> import codecs, grpc, os
>>> import rpc_pb2 as ln, rpc_pb2_grpc as lnrpc
>>> macaroon = codecs.encode(open('LND_DIR/data/chain/bitcoin/simnet/admin.macaroon', 'rb').read(), 'hex')
>>> os.environ['GRPC_SSL_CIPHER_SUITES'] = 'HIGH+ECDSA'
>>> cert = open('LND_DIR/tls.cert', 'rb').read()
>>> ssl_creds = grpc.ssl_channel_credentials(cert)
>>> channel = grpc.secure_channel('localhost:10009', ssl_creds)
>>> stub = lnrpc.LightningStub(channel)
>>> request = ln.GetTransactionsRequest()
>>> for response in stub.SubscribeTransactions(request):
print(response)
{
"tx_hash": <string>,
"amount": <int64>,
"num_confirmations": <int32>,
"block_hash": <string>,
"block_height": <int32>,
"time_stamp": <int64>,
"total_fees": <int64>,
"dest_addresses": <array string>,
"raw_tx_hex": <string>,
}
JavaScript示例代码
> var fs = require('fs');
> var grpc = require('grpc');
> var lnrpc = grpc.load('rpc.proto').lnrpc;
> process.env.GRPC_SSL_CIPHER_SUITES = 'HIGH+ECDSA'
> var lndCert = fs.readFileSync('LND_DIR/tls.cert');
> var sslCreds = grpc.credentials.createSsl(lndCert);
> var macaroonCreds = grpc.credentials.createFromMetadataGenerator(function(args, callback) {
var macaroon = fs.readFileSync("LND_DIR/data/chain/bitcoin/simnet/admin.macaroon").toString('hex');
var metadata = new grpc.Metadata()
metadata.add('macaroon', macaroon);
callback(null, metadata);
});
> var creds = grpc.credentials.combineChannelCredentials(sslCreds, macaroonCreds);
> var lightning = new lnrpc.Lightning('localhost:10009', creds);
> var request = {}
> var call = lightning.subscribeTransactions(request)
> call.on('data', function(response) {
// A response was received from the server.
console.log(response);
});
> call.on('status', function(status) {
// The current status of the stream.
});
> call.on('end', function() {
// The server has closed the stream.
});
{
"tx_hash": <string>,
"amount": <int64>,
"num_confirmations": <int32>,
"block_hash": <string>,
"block_height": <int32>,
"time_stamp": <int64>,
"total_fees": <int64>,
"dest_addresses": <array string>,
"raw_tx_hex": <string>,
}