在win10上搭建比特币闪电网络单机双节点测试环境(二)

现在我们可以在本机上建立第二个节点,第二个节点的建立有一些不同,我们一步一步来。

  1. 将第一个节点的比特币同步目录复制一份作为第二个节点的同步目录
    在我这里是将f:\temp\btctestnet复制为f:\temp\btctestnet2,复制同步目录可以免于再次同步区块链。

  2. 新开一个ubuntu窗口,并新建一个用户
    a. sudo adduser nu新建一个nu用户
    b. su - nu切换到这个用户

  3. 开启bitcoind,并同步区块链

     bitcoind -daemon -testnet -port=17195 -rpcport=17495 -datadir=/mnt/f/temp/btctestnet2
    

注意这里为了避免端口冲突,重新设置了两个绑定的端口。

  1. 等待区块链同步完成
    因为区块链目录是被复制的,所以同步过程会很快完成,同样可以用getblockchaininfo可以看到同步进度

     bitcoin-cli -testnet -rpcport=17495 -datadir=/mnt/f/temp/btctestnet2 getblockchaininfo
    

注意这里的rpc端口需要指定,datadir指向新的目录

  1. 安装c-lightning
    这一步的过程与第一个节点相同

注:如果你遇到user is not in sudoer list错误,可以用sudo -i切换到root用户,并将nu用户添加到/etc/sudoers中。

  1. 启动c-lightning,并连接bitcoind

     lightningd/lightningd --testnet --bitcoin-datadir=/mnt/f/temp/btctestnet2 --log-level=debug --bitcoin-rpcport=17495
    

注意这里的端口和目录

  1. 新建地址
    这一步也与第一个节点相同

  2. 获取测试比特币
    之前那个faucet再次转账需要12小时,但是我们可以从第一个节点直接转账到第二个节点。
    第一个节点ubuntu窗口中输入:

     cli/lightning-cli withdraw 第二个节点中某个比特币地址 50000
    

这里转账50000,单位也是聪(satoshis)
命令会输出一个txid,这个是交易id,可以在这里查到,等待交易确认就可以用listfunds来查看

sky@willw:~/lightning$ cli/lightning-cli withdraw tb1qh7r74r4mck729arzs36ua070p7v0w9dlfqp5tl 50000
{
"tx": "02000000000101ddcde054e19e805b711ba1adc2914f66f884bd0d72dc666d8365518ba8e606ca0100000000ffffffff0250c3000000000000160014bf87ea8ebbc5bca2f4628475cebfcf0f98f715bfba11fe00000000001600144e4cf8601882533d6b227a5454498c5d6b7a90d9024730440220120b850487bbe944e1311d52e9b96e8033eb08bc8a81b461cfe2ac66b137bc6b02206726c473fb79fb75f10638fcc5f2f5c30d607cf379a5d801291586acb72dd6460121020e974fa6300b34cc1b3039358456a141db8284d8feb81171ebef9a61231d603d00000000",
"txid": "0fda9d772cd6b8c391f3663643502a6428f014dcaaed69b3bcd60e00b8c6a32a"
}
  1. 连接第一个节点
    第二个节点的窗口中输入:

     cli/lightning-cli connect 第一个节点id 127.0.0.1
    

还记得第一个节点的id怎么得到吗?这里就能用上了。

nu@willw:~/lightning$ cli/lightning-cli connect 03707f3ba87336a4571750f7d1f17d7261843ccf1310c122afbf70c01f0e22fe89 127.0.0.1
{
"id": "03707f3ba87336a4571750f7d1f17d7261843ccf1310c122afbf70c01f0e22fe89"
}
  1. channel充值
    第二个节点的窗口中用fundchannel命令充值

    cli/lightning-cli fundchannel 第一个节点id 10000
    

这里为这个channel充值了10000聪(satoshis)。
这个命令也会输出一个txid,需要等待交易确认以后才能继续。

nu@willw:~/lightning$ cli/lightning-cli fundchannel 03707f3ba87336a4571750f7d1f17d7261843ccf1310c122afbf70c01f0e22fe89  10000
{
"tx": "020000000001012aa3c6b8000ed6bcb369edaadc14f028642a50433666f391c3b8d62c779dda0f0000000000ffffffff0210270000000000002200209199e26614f58b9321d077dc42f3c2aad8bbacb0133be81907abde8c650226d8a69b000000000000160014b70812f7bd6bedfa30da060c4a968cbb2882f6a602483045022100e687d9748798dced679a40313e5b35bb2aecc60e904e235a307a3470188ecca10220707dfd4c195c9c25e0f380df1b0f49a567b6adc48ddaab1fdba7553423fe10a10121036e97de798004bf2fc8ff32da429cbde9684f8842b1bab30dcb2db207457c288100000000",
"txid": "43b71852606ae1571f183285d380680352e560b6896d940ffd4d764cbdcbf1ce",
"channel_id": "cef1cbbd4c764dfd0f946d89b660e552036880d38532181f57e16a605218b743"
}

交易确认后可以用listpeers命令来确认channel是否已经建立。

nu@willw:~/lightning$ cli/lightning-cli listpeers
{
"peers": [
    {
    "id": "03707f3ba87336a4571750f7d1f17d7261843ccf1310c122afbf70c01f0e22fe89",
    "connected": true,
    "netaddr": [
        "127.0.0.1:9735"
    ],
    "global_features": "",
    "local_features": "88",
    "globalfeatures": "",
    "localfeatures": "88",
    "channels": [
        {
        "state": "CHANNELD_NORMAL",
        "scratch_txid": "5e5807030d060842332100980d0bcddd23ffdca4f4fed8a2f04cd894e28b03e7",
        "owner": "lightning_channeld",
        "short_channel_id": "1452473:32:0",
        "channel_id": "cef1cbbd4c764dfd0f946d89b660e552036880d38532181f57e16a605218b743",
        "funding_txid": "43b71852606ae1571f183285d380680352e560b6896d940ffd4d764cbdcbf1ce",
        "private": false,
        "msatoshi_to_us": 10000000,
        "msatoshi_to_us_min": 10000000,
        "msatoshi_to_us_max": 10000000,
        "msatoshi_total": 10000000,
        "dust_limit_satoshis": 546,
        "max_htlc_value_in_flight_msat": 18446744073709551615,
        "their_channel_reserve_satoshis": 546,
        "our_channel_reserve_satoshis": 546,
        "spendable_msatoshi": 9454000,
        "htlc_minimum_msat": 0,
        "their_to_self_delay": 6,
        "our_to_self_delay": 6,
        "max_accepted_htlcs": 483,
        "status": [
            "CHANNELD_NORMAL:Funding transaction locked."
        ],
        "in_payments_offered": 0,
        "in_msatoshi_offered": 0,
        "in_payments_fulfilled": 0,
        "in_msatoshi_fulfilled": 0,
        "out_payments_offered": 0,
        "out_msatoshi_offered": 0,
        "out_payments_fulfilled": 0,
        "out_msatoshi_fulfilled": 0,
        "htlcs": [
        ]
        }
    ]
    }
]
}

这是从第二个节点窗口看到的,如果是第一个节点窗口输出会稍有不同。注意这里的参数,另外有一个msatoshi单位,表示聪的千分之一。

  1. 第一个节点窗口中生成invoice

    sky@willw:~/lightning$ cli/lightning-cli invoice 10000 mypay6 mypay6
    {
    "payment_hash": "69d53d2fff8dfddc6ba98e92a6ad5d2989af9c69cc517a8c4f0035550bb00616",
    "expires_at": 1547534361,
    "bolt11": "lntb100n1pwr6usfpp5d82n6tll3h7ac6af36f2dt2a9xy6l8rfe3gh4rz0qq642zasqctqdq2d4uhqctexccqp2rzjqf6n68zzwwktgqjqf320msfm8a5q3mpuavekmx0p732cqdpv08vvg93fhyqqqgqqqqqqqqqpqqqqqzsqqc4xz7tzg4j583zg97gt8x7tuzxgxy86ym9dvpgfqkr4vy9ndhgedqhtgq07sawunung2sslg3hq5g4g9pju68v3fe6np7ssle96h933gpxzquj8"
    }
    

这里的数值是10聪,但是单位是msatoshi,所以数值是10000
两个mypay6的前一个是invoice的名字,必须唯一,后一个是描述,可以为空。
执行的结果是这个支付请求被编码成了bolt11字符串,将这个字符串提供给支付者就行了。

  1. 第二个节点窗口中完成支付
    将上一步的bolt11字符串拷贝到第二个节点窗口中,用pay命令进行支付

    nu@willw:~/lightning$ cli/lightning-cli pay lntb100n1pwr6usfpp5d82n6tll3h7ac6af36f2dt2a9xy6l8rfe3gh4rz0qq642zasqctqdq2d4uhqctexccqp2rzjqf6n68zzwwktgqjqf320msfm8a5q3mpuavekmx0p732cqdpv08vvg93fhyqqqgqqqqqqqqqpqqqqqzsqqc4xz7tzg4j583zg97gt8x7tuzxgxy86ym9dvpgfqkr4vy9ndhgedqhtgq07sawunung2sslg3hq5g4g9pju68v3fe6np7ssle96h933gpxzquj8
    {
    "id": 5,
    "payment_hash": "69d53d2fff8dfddc6ba98e92a6ad5d2989af9c69cc517a8c4f0035550bb00616",
    "destination": "028cc127521a107e4e3b29ff802493b7bb976c99b3dfb3f2003b868f8139081962",
    "msatoshi": 10000,
    "msatoshi_sent": 10006,
    "created_at": 1547530776,
    "status": "complete",
    "payment_preimage": "ae901b2d5370987f1ea30de5291922e6193fb3a4c9bffa46b25a6e3207bfa303",
    "description": "mypay6",
    "getroute_tries": 1,
    "sendpay_tries": 1,
    "route": [
        {
        "id": "028cc127521a107e4e3b29ff802493b7bb976c99b3dfb3f2003b868f8139081962",
        "channel": "1452473:32:0",
        "msatoshi": 10006,
        "delay": 10
        }
    ],
    "failures": [
    ]
    }
    

出现这个输出表示支付成功。
第一个节点窗口中可以查询到:

sky@willw:~/lightning$ cli/lightning-cli listinvoices
{
"invoices": [
    {
    "label": "mypay6",
    "bolt11": "lntb100n1pwr6usfpp5d82n6tll3h7ac6af36f2dt2a9xy6l8rfe3gh4rz0qq642zasqctqdq2d4uhqctexccqp2rzjqf6n68zzwwktgqjqf320msfm8a5q3mpuavekmx0p732cqdpv08vvg93fhyqqqgqqqqqqqqqpqqqqqzsqqc4xz7tzg4j583zg97gt8x7tuzxgxy86ym9dvpgfqkr4vy9ndhgedqhtgq07sawunung2sslg3hq5g4g9pju68v3fe6np7ssle96h933gpxzquj8",
    "payment_hash": "69d53d2fff8dfddc6ba98e92a6ad5d2989af9c69cc517a8c4f0035550bb00616",
    "msatoshi": 10000,
    "status": "paid",
    "pay_index": 1,
    "msatoshi_received": 10006,
    "paid_at": 1547530776,
    "description": "mypay6",
    "expires_at": 1547534361
    }
]
}

statuspaid表示支付成功。

  1. 关闭channel
    支付完成后,任意一方可以关闭channel,这里我们让第二个节点窗口来关闭。

    nu@willw:~/lightning$ cli/lightning-cli close 1452473:32:0
    {
    "tx": "0200000001cef1cbbd4c764dfd0f946d89b660e552036880d38532181f57e16a605218b7430000000000ffffffff014e26000000000000160014d2f93e6a259a0596cf633f561546d3c739d1119200000000",
    "txid": "ce8c6b9b27ce9becd2264b9e5e64bdb857a79f39a855e69b7e9d2cdf3429bbfd",
    "type": "mutual"
    }
    

close命令后面的1452473:32:0channel的短id,实际上提供对方节点id,链id都可以。
根据txid可以去链上查看比特币到账情况。

至此最简单的闪电网络支付完成,实际中由于c-lightning自身的一些问题,支付过程可能并不顺利,欢迎大家到官网issue,帮助c-lightning发展。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容