ClosedChannels - 查询已关闭通道
OpenChannelSync 是OpenChannel调用的同步版本。该调用主要用于客户端通过REST代理的调用。和其他所有 的同步调用一样,所有的字节片段都使用16进制编码字符串。
gRPC请求 - OpenChannelRequest
字段如下:
- node_pubkey bytes:节点用于开启通道的公钥
- node_pubkey_string:节点用于开启通道的公钥的16进制编码表示
- local_funding_amount:钱包需要提交给通道的satoshi数量, int64
- push_sat:需要推送给远端作为初始提交状态的一部分的satoshi数量,int64
- target_conf:存款交易的目标确认数, int32
- sat_per_byte:手工设置的手续费费率,int64 ,单位sat/byte
- private: 通道是否为私有,bool
- min_htlc_msat:通道接收的HTLC最小值 ,int64 ,单位:millisatoshi
- remote_csv_delay:远端交易提交的延时要求, uint32 ,如果未设置的话,则自动匹配通道尺寸
- min_confs:用作交易输入的utxo的最小确认数, int32
- spend_unconfirmed:是否允许使用未确认的utxo作为交易输入, bool
gRPC响应 - ChannelPoint
字段如下:
- funding_txid_bytes: 存款交易的ID, bytes
- funding_txid_str:存款交易ID的16进制字符串表示
- output_index: 存款交易的输出索引, uint32
示例代码
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.OpenChannelRequest(
node_pubkey=<bytes>,
node_pubkey_string=<string>,
local_funding_amount=<int64>,
push_sat=<int64>,
target_conf=<int32>,
sat_per_byte=<int64>,
private=<bool>,
min_htlc_msat=<int64>,
remote_csv_delay=<uint32>,
min_confs=<int32>,
spend_unconfirmed=<bool>,
)
>>> response = stub.OpenChannelSync(request)
>>> print(response)
{
"funding_txid_bytes": <bytes>,
"funding_txid_str": <string>,
"output_index": <uint32>,
}
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 = {
node_pubkey: <bytes>,
node_pubkey_string: <string>,
local_funding_amount: <int64>,
push_sat: <int64>,
target_conf: <int32>,
sat_per_byte: <int64>,
private: <bool>,
min_htlc_msat: <int64>,
remote_csv_delay: <uint32>,
min_confs: <int32>,
spend_unconfirmed: <bool>,
}
> lightning.openChannelSync(request, function(err, response) {
console.log(response);
})
{
"funding_txid_bytes": <bytes>,
"funding_txid_str": <string>,
"output_index": <uint32>,
}