搜索
yuntianming 船员
yuntianming
船龄 3.4年 金币 239
  • 帖子 17
  • 回复 7
yuntianming
yuntianming
船员 船龄 3.4年
Gitcoin:发现那些还在摇篮里的百倍币
Gitcoin是什么?Gitcoin是一个基于以太坊网络构建的开源的去中心化项目协作平台。项目方可以在这里悬赏开发者协作开发项目,自由开发者也可以在这里主动寻找项目。也就是说通过这样一个平台,以太坊开源项目和自由开发者之间的协作通过ETH实现货币化。随着平台的发展,更多的功能被添加进来,包括项目众筹,赞助,黑客马拉松,社交等。并且更多的公链平台生态,包括Binance、Polkadot、Tezos、Cosmos、Conflux、filecoin等生态的项目也加入进来。开源区块链项目加入Gitcoin的最大好处是可以得到众多投资方的关注,比如之前的第7轮项目就获得V神,BalancerLabs、Synthetix、iearnfinance(YFI)、YAM.Finance、MEME的资助,还有来自Chainlink和以太坊基金会,Compound创始人Leshner以及知名社区LobsterDao,知名投资基金FutureFund、ThreeArrows和Defiance的资金。因此这个平台对项目方来说,是推广/获得投资和吸纳技术的孵化平台。对于开发者来讲是找到项目发挥自己开发能力的舞台。对于投资者来讲,可以从中发现一些前景远大潜力非凡的项目,早期开始资助,关注,特别是许多项目未来空投时,都会给Gitcoin资助者留一部分空投名额,比如Badger、Furucombo、StakeDAO这些项目的空投就是精准空投给资助人群。Gitcoin快速了解,点击点击这里快速了解。访问官网请点击这里。功能服务要想尝试Gitcoin各项功能,需要登陆才可以,登陆账户需要Github账户授权许可。(Github账户建议大家还是都应该有一个的)Gitcoin主页登陆之后就进入了Gitcoin主页。主页就是TownSquare(中心广场),如图1可以看到中间区域有发布消息的界面,还可以看到其他人即时发布的消息,比如开发者介绍自己寻找项目,项目方发起的赞助邀请,分享的文章链接及评论。图1左侧是推荐的Tribes(部落)可以浏览一下,关注自己感兴趣的Tribes,比如人气最旺的部落有ethereum、gitcoin、metamask以及uniswap、chainsafesystems等。主页右侧是最近的黑客马拉松活动链接。主页最上面的菜单栏分为已经介绍过的TownSquare(中心广场),Products(产品,这个是重点,下面介绍),Community(社区),Company(公司),还有lookingfordevelopers?右上角有搜索,消息通知,登陆账户名称头像,还有连接钱包(赏金,赞助都是通过钱包转账的)。Gitcoin产品Products(产品)是Gitcoin平台能够提供的产品服务。包括6种产品。Bounties(悬赏)主要用于Github开源项目负责人或者管理员发布自己的需求,比如代码仓库的bug修复、新功能开发、代码安全,可以发起悬赏(将赏金ETH绑定到该悬赏),感兴趣的开发者领取悬赏,在Github上完成任务后提交PullRequest,经问题发布者确认(merge)后,开发者钱包就会自动收到赏金ETH。Bounties(悬赏)产品提供的功能有:FundIssue(发起悬赏,可以选择使用的公链)、ExploreBounties(浏览悬赏)、FunderQuickstart(悬赏快速指南)等。Hackathons(黑客马拉松)这个产品针对的需求是项目方希望推广项目,获得更多关注,特别是吸引优秀开发人员加入项目。项目方发起Hackathons,并附带一笔奖金,程序员可以组队参与,在规定时间,比如一周或者数天内,团队成员密切协作,黑客送的最大好处是成员团队成员协作过程中激发的灵感和碰撞。最后获胜团队可以获得奖金。Gitcoin提供的功能包括ExploreHackathons,我们可以看到当前“BinanceHackathon”已经进行了20多天,奖金金额为61000BUSD。其中一等奖3名,每队获胜者奖金8000BUSD,二等奖3名,每队获胜者奖金5000BUSD,三等奖7名,每队获胜者奖金1500BUSD,荣誉奖15名,每队获胜者奖金100BUSD,除了奖金外,还有BSC生态其他奖励。奖金还算丰厚吧,参与的话只需要注册这个活动,然后选择奖励,组队就可以开始了。见图2.图2Grants(资助)投资者Gitcoin中对项目的资助是通过CLR基金实现的。CLR基金接受任何人资助,最少资助金额为1DAI。为了鼓励那些被更多人关注而不是资本大鳄追逐的项目,CLR基金采用了VitalikButerin在他的博客及与zoHitzig和GlenWeyl共同撰写的论文中广泛讨论的二阶融资(quadraticfunding)的理念。二阶融资是把每个项目收到的资助金额和资助人数关联在一起,也就是社区支持最多的项目(就贡献者的数量而言)将获得匹配池的最大部分。简单来讲就是项目收到的每一笔资助金额,先取其平方根的值,得到该笔资助的积分,将该项目每一笔资助积分求和得出项目总积分,再对总积分进行平方计算,得到该项目应该得到的总资助金额,这里总资助金额与该项目实际获得的资助金额的不足部分,由以太坊基金会补足。其原理可以参见图3所示的二阶投票。图3点击这里这里查看参与资助很简单,从当前可选的项目中找到自己感兴趣的项目,加入购物车,然后在购物车调整金额,钱包付款。这里需要注意:有两种付款方式可以选,一种是默认的zkSync付款,另外一种是标准付款。zkSync付款适合经常捐助的用户,就是需要开通zkSync二层网络,将一笔资金注入二层网络,以后可以多次捐助不同项目,第一次可以多存一些资金,以后手续费就比较低。标准付款适合偶尔捐助的用户,就是通过以太坊主网转账。两种付款方式都需要两笔gas费,一笔是授权扣款gas费,还有一笔是转账gas费,只不过二层网络后续费用更低。参见图4.图4当然如果你是项目方,也可以点击“CreateGrant”创建一个希望得到资助的项目。我们从图可以看出,本轮(第9轮,2021年3月10日-25日)正在募集资助的项目类别分为Cartesi生态、ZCash生态、全球社区、Matic生态、Liftoff及Filecoin、dApp、基础设施技术、APPLO、健康等类别。投资者可以在这里研究项目,了解社区的关注度,还可以直接关注募资发起者(一般会是创始人),在Gitcoin社区聊天。这些项目都还在成长期,长期关注,发掘百倍币是完全可能的。除此之外,还有我们前面提到的项目未来空投的机会。如果资助十多个项目,有一个uniswap那样的空头机会,就会有动力捐助更多的项目了。Quests(学习任务)在Gitcoin学习是可以赚钱的。GitcoinQuests帮助大家通过游戏化方式了解Web3生态系统。图5,大家可以在Quests探索学习Web3领域的不同主题。取得排名,获得Gitcoin的NFT徽章Kudos荣誉徽章,并赢取点数奖励。图5点击第一个游戏,竟然是关于EOS的:你所不知道的关于以太坊杀手EOS的。图6中有个链接,打开那篇文章,阅读后开始游戏,也就是回答问题。回答错误,系统会提示闯关失败,停止游戏1分钟。图6Kudos(徽章)Kudos是社群人际交往中的个性标记,也是荣誉勋章。成员可以自己制作Kudos彰显个性,赠送彼此,表达感谢,标注群体,比如Pythonista,其格式svg文件,也可以在Kudos市场标价出售。上面提到的Quests游戏获胜者也可以获得Kudos。特别说明,每一份Kudos都是独特有限的。Kernel(Web3社区)Kernel首先是一个开放的,点对点网络,该网络由区块链领域最有才华的个人组成,每年大约有3轮课程,每一轮为期8周,每周都会学习Web3模块。每个模块由两个部分组成:阅读材料、由文章、视频和偶尔的播客组成的综合资料,并且每周定期举办的线上讨论学习。Community(Gitcoin社区)成员在这里可以浏览关注的部落,查看社区大V排行等。好的,到这里Gitcoin就介绍完了。最后我们重复一下Gitcoin官网对自己的介绍:图7参考文章:详解GitcoinGrants的二次融资机制https://baijiahao.baidu.com/s?id=1685494742724977894&
2021-02-22 | 链圈好物 4410 1 0
yuntianming
yuntianming
船员 船龄 3.4年
比特币网络出现双花,币圈全线大跌,牛市就这样走了?
【缘由】昨天(2021年1月20日)开始,一则新闻爆出:比特币网络出现陈腐区块(staleblock),出现交易双花。许多刚入场的韭菜惊呼:“比特币网络出现了双花攻击,是不是遭遇重大危机,我怎么这样倒霉,刚进来就遇灭顶之灾,这里都是骗子,快还我钱来,不玩了行不行?”紧接着从比特币开始,币圈项目全线下跌,比特币价格中午一度接近34000美元。并且延续到今天(1月21日),跌破34000美元。同时连带ETH,新秀DOT和Defi中的领头羊UNI都一并下跌。图1那么比特币网络到底发生了什么?真的是遇到了前所未有的灾难么?【原理】先不急,我们来梳理一下一笔交易是上链的过程。所有的转账交易都是对属于自己私钥锁定的utxo的消费。utxo不知道说什么?通俗讲,utxo就是你帮别人干活(挖矿或者别人转账给你)所收到的一块猪肉干,这块猪肉干被你的私钥锁定了,你不用私钥解锁,任何人都无权消费,当然这块猪肉干永不变质(货币属性)。当你想要消费这块猪肉干时,你可以使用私钥授权消费其中一部分,或者一次性全部消费掉,或者多根猪肉干捆在一起(根据交易金额)。本次消费生成的交易假设是T1,这笔交易就和网络中同时产生的其他交易被挖矿节点捕获,进入节点的内存池,按照一定的规则组成候选区块,等待当前的区块挖矿成功后,节点就开始对T1交易所在的区块进行挖矿。当然T1这笔交易一定会被多个节点都收录进入自己的候选区块。任何节点挖矿成功,也就是对当前的候选区块头进行哈希计算,哪个节点首先找到符合难度要求的哈希值即为挖矿成功(其他节点验证其结果无误后宣布自己挖矿失败,释放候选区块中的交易到内存池,重新挑选交易组合成新的候选区块)。至此T1交易就算是被比特币网络确认了一次。【过程】我们来看昨天被爆料的这笔交易,交易者是想把属于自己的4根猪肉干捆起来(总价值也就是20多美元)一起消费,更可能是汇总转账到自己的新地址。点击最终确认的交易查看交易详情。点击这里查看更多区块链浏览器图2交易者首先发起了一笔金额为0.00062063BTC的交易(假如称为T2交易),T2交易就被F2Pool鱼池节点收入内存池。F2Pool鱼池节点把T2交易封装到666833候选区块,并开始挖矿。不过这个交易者是个急性子,在F2Pool鱼池节点开始挖矿的同时,又发起了针对这4根猪肉干的另一笔交易,这次转账交易是0.00014499BTC(称为T3交易)。T3交易被SlushPool矿池节点捕获到内存池,也同样纳入自己的666833候选区块,开始挖矿。最后在UTC时间2021年1月20日1:17(北京时间9:17)左右,两个矿池几乎同时宣布自己挖矿成功。这样针对相同的4根猪肉干(UTXO)的双花消费就实现了,也就是同一笔钱可以被两次花费。其实这样的事情在比特币网络上几乎每天都会发生。搜索:staleblock,会发现爆出废块的机会很高,其实叫陈腐区块,太过于文艺,不如废块这个称呼更贴切。这主要是由于不同矿池节点的网络延迟造成的。也称为比特币网络软分叉,也就是说从这个区块开始,比特币区块链出现两个并列的区块,那么怎么办呢?中本聪设计比特币的时候,就已经预料到这类事情的发生。采取的措施是不用管,但是制定了一个原则:最长链就是比特币主链,只认可主链上的交易。具体来说就是看后续区块是追加到哪个666833区块上,如果后续区块跟随F2Pool鱼池的666833区块,那么这条就是比特币主链。如果后续区块跟随SlushPool矿池的666833区块,那么它就是比特币主链。那么可能存在有人在延续F2Pool鱼池的区块,也有人在延续SlushPool的区块。但是一段时间之后,一定是只有一条链被更多节点认可,另外一条链就被废弃。被废弃的链中的区块内包含的交易会被释放回内存池,重新被节点收纳进入新的候选区块。【结果】具体到昨晚这个事件,就是T2交易所在的区块被废弃,称之为staleblock,废块。T3交易所在的区块成为主链,其交易得到网络认可。也就是图2中展示的结果。弄明白了这个原理,就明白币圈真是个神奇的所在,什么样的事情都可以拿来炒作,并且还真的会有效果。而且币圈还有更多让人大跌眼镜,瞠目结舌,或者拍案惊奇,捶足顿胸的离奇故事,有时间以后慢慢说。
2021-01-21 | 项目交流 4257 3 0
yuntianming
yuntianming
船员 船龄 3.4年
牛市来了?不要只是乘坐比特币电梯,享受上上下下的感受
价格一涨,所有信仰坚定者都跳出来了。但是比特币这部电梯,能让你只上云霄,也会让你坠入地狱。下面这部比特币电梯,许多人都是从-2层开始乘坐的,当然更多人曾经爬到2层,3三层,甚至4层5层,绝大部分都因过度自信回归1层2层。-2层:比特币是骗局,数字货币都是骗局-1层:比特币这么热闹,到底是啥,看不懂啊,听说会丢币0层:想买比特币,1个太贵了吧,能不能少买点,哪里能买到,先买个最便宜的币子吧,或者挖矿可以不1层:持有0.几个BTC,一堆山寨币,比特币涨,难受,笃定这个shitcoin就是未来比特币,一定跑赢。自己能够在交易所买卖操作2层:被shitcoin一再打击,全部亏本换成比特币,终于有1个比特币了。3层:自我感觉良好,开始骚操作,跟随大神开合约,重新跌回1层4层:持有2个BTC,32eth,比特币涨三倍,理解定投只买不卖5层:持有两位数比特币,比特币张10倍,shitcoin涨数十倍,了解波段周期6层:持有三位数比特币,学会布局产业,了解波段7层:持有比特币超过三位数,把比特币当作家族资产传承载体最后给大家推荐一个比特币加密货币相关的电影合集,看看早期先驱如何乘坐这部电梯。比特币加密货币相关的电影合集部部精彩,主要内容如下:比特币的崛起TheRiseandRiseofBitcoin(2014年)】【我是中本聪IamSatoshi】【比特币:金钱终结(2015年)】【比特币塑造未来(2017年)】【加密货币Crypto(2019)】【深网:比特币和丝绸之路未透露的故事】【信任重塑:比特币和区块链】【NHK纪录片:比特币最前线】【比特币银行BankingonBitcoin(2016)】【超级强盗BitcoinHeist】
2021-01-07 | 区块链社区 2116 0 0
yuntianming
yuntianming
船员 船龄 3.4年
江卓尔出100BTC怒撕李晨TC,才用了哪些技术工具?
【缘由】此事件缘起@李晨TC(特别说明:不是演员李晨)在微博上晒自己钱包里有9203比特币的视频,被博主@八哥谈币转发求证真假。图1缘由【工具1:smartbit】@江卓尔_莱比特矿池通过比特币区块链浏览器https://www.smartbit.com.au/【详细介绍参看https://ytm.ltd/?id=726】查找,没有@李晨TC视频中展示的地址。图2smartbit@李晨TC急了,开始破口大骂。并且在自己的群里叫嚣:刺激他亮一下完整地址。安排黑客团队(盗走他的币)。图2李晨TC急了【工具2:比特币百富榜】然后@李晨TC的这番言论被@江卓尔_莱比特矿池一顿嘲笑:李晨估计连区块链所有地址都是透明的,所有地址和币数都公开可查都不知道图中查看比特币的富豪排行榜地址是:https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html【详细介绍参见https://ytm.ltd/?id=726】图4比特币百富榜江总纵横网络币圈多年,当然不是吃素的,下点功夫就开始揭底爆料。比如@李晨TC的学历造假、资产总价值(估计最多持有100btc)、带单卖课(从8元公众号,128元,199元,3001元到9999元群内期货带单,总有一款适用)双方约定赌一把,各出100比特币,通过比特派文浩即博主@!问号进行公正验证。赢家获得对方100比特币,如果无法确定,200比特币捐给希望工程。具体进展大家可以关注上面提到的博主账户,好戏渐入佳境,值得关注。图5对赌100比特币【工具3:如何找到莱比特矿池地址】找一个比特币区块链浏览器,找到莱比特矿池,比如:https://btc.com/stats/pool/BTC.TOP【更多内容参见https://ytm.ltd/?id=206】,可以看到矿池的出块状况。图6莱比特矿池点击最近的区块,如图中所示的就是区块中创币交易,也就是第一笔交易中,矿池接收挖矿收益的地址:1Hz96kJKF2HLPGY15JWLB5m9qGNxvt8tHJ图7矿池地址再来看下地址详细数据:https://btc.com/1Hz96kJKF2HLPGY15JWLB5m9qGNxvt8tHJ该地址曾经接收超过20万个比特币。当前余额是13个。图8地址余额
2021-01-04 | 链圈好物 5632 2 0
yuntianming
yuntianming
船员 船龄 3.4年
如何第一时间自动收到链上大额比特币等币种交易提醒
今天给大家推荐一个网站:WhaleAlert巨鲸警报,主要通过跟踪在各种区块链上进行的这些交易,将它们转换成标准格式,并将它们存储在其数据库中。然后持续追踪那些有能力波动市场的账户地址,也就是巨鲸地址,观察“巨鲸”的交易动态并进行播报。【巨鲸警报主页】https://whale-alert.io/【实时交易】https://whale-alert.io/transaction-map更多类似网址可以参见这个网址【事件】2020年5.20晚上,巨鲸警报通过Twitter报告有40个比特币从2009年3月后未发生转账的比特币远古地址转出,并猜测,该钱包可能属于中本聪。受此消息影响,比特币由9700美元下跌至9300美元,24小时内全网合约爆仓4.33亿美元。【规则】WhaleAlert数据库包含数千个个人、交易所和公司的已知地址,并不断地手动添加和更新,或者在人工智能的帮助下进行更新。其跟踪软件能够即时识别与已知地址和相关地址之间的交易,消除了交易匿名性,揭露部分意图欺骗世人的冒名顶替者。巨鲸警报会跟踪所有交易,但是主要对大额交易提供警报。大额是指价值$10,000,000以上的比特币或者USDT,价值$5,000,000以上的ETH、XRP,价值$2,500,000以上的EOS、XLM,还有其他ERC20代币等。具体可通过https://whale-alert.io/whales查询。超过上述价值的交易将会通过Twitter和Telegram频道进行报告。希望接收数据的用户可以关注Twitter账户:@whale_alert。该账户粉丝数超过232,000人,是加密资产最著名的的推特账号之一。对于交易完成后,某些钱包会将找零或者余额发送到新的地址。WhaleAlert采用的方法是检查其中一个输出是否比其他输出大得多,不过除此之外还有其他办法,详细可见https://en.bitcoin.it/wiki/Change。巨鲸警报还可以实时查看比特币、以太坊、EOS、Tron、Stellar、Ripple、Tezos、BinanceChain、NEO、Icon和Steem上的所有交易。每一条线代表一笔交易,交易额越大,线越粗。见下图。巨鲸警报还会跟踪下列稳定币:Tether(USDT),USDCoin(USDC),GeminiDollar(GUSD),Dai(DAI),Paxos(PAX),TrueUSD(TUSD),HuobiUSD(HUSD),BinanceUSD(BUSD)。巨鲸警报承认有些区块链不容易跟踪,比如IOTA就比较复杂,而Monero几乎不可能跟踪交易状况。
2020-12-30 | 链圈好物 1103 0 0
yuntianming
yuntianming
船员 船龄 3.4年
人人都能成为闪电网络节点:第5章lightning-cli详解
欢迎测试连接第四章我们了解了如何连接别的节点以及建立通道,大家对lightning-cli命令的重要性应该有了充分的了解,但是这还不够,我们还需要进一步用这个命令监控节点以及通道运行状况。下面我们就把这个命令详细操作演练一下。基本操作命令lightning-clihelp//显示命令的帮助说明lightning-clistop//关闭c-lightning连接节点常用命令lightning-cligetinfo//查看自己节点的情况image.pnglightning-clilistnodesimage.pnglightning-clilistpeersimage.pnglightning-clipingid//运行上述命令之前最好使用这个ping测试一下是否连通。后面可以跟数据包大小(默认是128)image.pnglightning-cligetrouteidmsatoshiriskfactor//这条命令的含义是尝试查找付款的最佳路由,就是说这笔金额的资金达到目标节点,承受设定值风险因子的最佳路由。这几个参数是节点id,毫聪金额(支付金额),风险因子,必备参数。其中的风险因素是为了比较路线,能够接受的路线上的额外费用,单位是年息百分比,如果设定为20,就是年息20%。image.pnglightning-cliconnectidimage.pnglightning-clidisconnectidimage.pnglightning-clinewaddrimage.pnglightning-clicloseidimage.png我生成这个地址后,过了一会才去用比特派闪电网络手机端支付后,看到这个标签的收款码超时了,就重新产生第二个,然后转账成功,标注位置可以看到第二笔支付成功了。image.pnglightning-clidelinvoicelabelstatus//删除未收到的收款信息,再使用listinvoices命令就看不到这个收款信息了。image.pnglightning-clidecodepaybolt11地址//解码收款地址的详细信息image.pnglightning-clipaybolt11地址//转账给手机端生成的bolt地址,体验了真实秒到的感觉。后面还可以跟其他参数比如金额,标签,延时重试等等,只有地址的的话,默认就是地址中设定的金额。image.pnglightning-clipaystatusimage.pnglightning-clilistpaymentsimage.pnglightning-clilistpaysimage.png其实转账结果在日志中也能看到:image.pnglightning-clifeeratesstyle//显示收费情况,其中的style可以是satoshi-per-kw({style}perkw)或者是satoshi-per-kb({style}perkb).image.png参考内容:lightning-clihelp
2019-04-02 | 闪电网络 13083 1 0
yuntianming
yuntianming
船员 船龄 3.4年
人人都能成为闪电网络节点:第4章连接别的节点
欢迎测试连接节点搭建完成了,其实万里长征走完第一步,最难的来了,就是如何和别的节点进行连接,建立通道。1、我们生成自己的地址在每个lightning节点上有一个wallet,这个wallet会自我管理多个比特币地址,我们先获取第一个。cli/lightning-cli--lightning-dir=./lightningdnewaddr//生成地址,由于我第一次运行时不小心运行在测试网络,所以导致原来的配置文件出错,c-lightning现在还没有解决这个问题,所以以后使用这个命令都必须指定目录。我的截图中会带这个参数,命令就不加了,特此说明。第一个地址这里说下后面的bech32地址,从Core0.16.0开始,可以生成隔离见证地址,隔离见证地址的交易占用更少的区块空间,交易费也更低。Bitcoincore引入隔离见证同时还有上图中被称为“bech32”的新地址格式。此地址格式开头为“bc1”,由Blockstream前CTOGregoryMaxwell和Blockstream开发人员PieterWuille开发。这个地址没有大小写字母和区别,bech32地址使用的字符比当前地址格式更少。这减少了人为错误比如读错的可能性。下面给这个地址转入0.002BTC。使用自己的BTC钱包转账给这个地址:bc1qf2ne8gazywfsejx8ndsry502rv550ctapjrq7n。交易内容等待6个确认之后,查看下余额。cli/lightning-clilistfunds//查看自己地址中的金额!image.png2、连接到其他节点首先看下都有哪些节点,点击https://explorer.acinq.co/image.png我们选择第一名LightningPowerUsers吧,拥有的通道数最多。但是测试之后网络连接超时了。选择国内的吧:ln01.bitpie.com比特派节点的详情,标注位置是节点id有一个不错的命令式ping命令测试一下是否可以连上:cli/lightning-cliping*****//后面加节点idping一下./cli/lightning-cliconnect027e70d8859e090ed975b11cfa02109221482954a254dff185e4142188eb66518b47.75.125.1929735//节点id网络地址端口号连接成功cli/lightning-clilistpeers//确认对等节点状况验证一下成功了bitcoin-clisettxfee0.005//设置交易费,单位是BTC/kBcli/lightning-clifundchannel027e70d8859e090ed975b11cfa02109221482954a254dff185e4142188eb66518b100000//使用100000聪建立通道image.pnglightning-cli--lightning-dir=./lightningdlistfunds//检查钱包中资金余额可以看到总金额变少了,通道中自己有100000聪,总共有./cli/lightning-cli--lightning-dir=./lightningdlistchannels//列出所有的通道通道很多2019-3-17节点数和通道数./cli/lightning-cligetroute027e70d8859e090ed975b11cfa02109221482954a254dff185e4142188eb66518b//后面跟对等节点id和聪数,了解达到对等节点的路由信息image.png最后我们使用getinfo命令看下结果cli/lightning-cli--lightning-dir=./lightningdgetinfogetinfoming命令查看自己节点信息,我们看到经过一段时间后已经有1个活跃的通道了经过一段时间,可以在浏览器看到自己的节点了。节点yuntianming的位置补充内容:BOLT11地址BOLT11address这是一个闪电网络的收款地址,格式是BOLT11使用闪电网络客户端扫码后,就直接是支付界面,如下图:手机支付界面还可以使用这个命令对交易进行分析lightning-clidecodepaylnbc1712393610p1pdx8....//破解BOLT11地址的真实含义,包括交易的细节内容这个就根据情况大家自己琢磨吧。参考内容:https://medium.com/@dougvk/run-your-own-mainnet-lightning-node-2d2eab628a8bhttps://www.jianshu.com/p/e59a81195163硬广闪电网络支持情况:虎符钱包(已支持)比特派(已经支持)COBO(3.27将支持)币信(即将支持)财路网(即将支持)持续更新中...中国区节点情况:http://t.cn/EMNcUxD推荐工具:http://t.cn/EPXHSTW
2019-03-25 | 闪电网络 23118 5 0
yuntianming
yuntianming
船员 船龄 3.4年
人人都能成为闪电网络节点:第3章安装c-lightning
欢迎测试连接安装环境要求:libsqlite3:数据库支持libgmp:要求secp256k1支持zlib:压缩程序除此之外如果需要开发还需要:pip3:安装python-bitcoinlibasciidoc:设计编辑man页面(如果需要修改帮助文档)valgrind:额外的debug检查需要的还有bitcoincore版本不得低于0.15安装步骤1、获取相关信息sudoapt-getupdatesudoapt-getinstall-yautoconfautomakebuild-essentialgitlibtoollibgmp-devlibsqlite3-devpythonpython3net-toolszlib1g-devlibsodium-devlibbase58-devimage.png2、克隆闪电网络程序cd~gitclonehttps://github.com/ElementsProject/lightning.gitcdlightning3、bulid闪电网络./configureimage.pngmake4、运行闪电网络bitcoind&(&的意思是进程为后台进程)cd~/lightning/lightningd./lightningd/lightningdimage.pnghelloworld大家应该看到上图中出现的lighting-rpc:nosunchfileordirectory这个错误导致下面的命令执行不成功:./cli/lightning-clihelp注意这个命令必须在合适的路径才可以,红色的pwd结果供参考后来加上相关参数./lightningd/lightningd--bitcoin-rpcuser=yuntianming--bitcoin-rpcpassword=***--bitcoin-rpcport=8332--alias=yuntianming//***是我隐藏了,你应该改为自己的密码image.png再次执行./cli/lightning-clihelp帮助命令显示完整了cli/lightning-cligetinfoimage.png节点已经建立起来了。但是问题来了,运行之后发现lightning运行在测试网络上,生成的地址是tb1开头的测试地址,无法接受转账。如果给命令加上--network=bitcoin会报错。image.pnggithub搜到这样的回复:https://github.com/ElementsProject/lightning/issues/1768image.png第一步先删除哪个sqllite3文件image.png第二步lightning-cli命令后面加上新的目录cli/lightning-cli--lightning-dir=./lightningd测试生成新地址命令./lightningd/lightningd--bitcoin-rpcuser=yuntianming--bitcoin-rpcpassword=****--bitcoin-rpcport=8332--alias=yuntianming--network=bitcoin--lightning-dir=lightningd//重新测试通过了安装完成终于安装完成了。参考文章:https://github.com/ElementsProject/lightning/blob/master/doc/INSTALL.md
2019-03-25 | 闪电网络 13375 0 0
yuntianming
yuntianming
船员 船龄 3.4年
人人都能成为闪电网络节点:第2章安装比特币全节点
欢迎测试连接安装编译比特币核心1、比特币客户端介绍Bitcoin比特币官方客户端有两个版本:一个是图形界面的版本,通常被称为Bitcoin(首字母大写),以及一个简洁命令行的版本(称为bitcoind)。它们相互间是兼容的,有着同样的命令行参数,读取相同的配置文件,也读写相同的数据文件。您可以在一台电脑中运行Bitcoin客户端或是bitcoind客户端的其中一个(如果您不小心尝试同时运行另外一个客户端,它会提示您已经有一个客户端在运行并且自动退出)。我们在本文中介绍的比特币核心,也就是执行完安装步骤,两个客户端都已经具备2、环境准备1)系统环境:操作系统:Ubuntu操作系统,版本为16.04LTS内存:最少2G硬盘空间:250GB以上系统环境2)第三方库sudoapt-getupdate//准备系统更新这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。update后,可能需要upgrade一下。准备更新sudoapt-getupgrade//升级已经比较的更新这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。如果你的软件都是最新版本,会提示:升级了0个软件包,新安装了0个软件包,要卸载0个软件包,有0个软件包未被升级。升级软件sudoapt-getinstallbuild-essentiallibtoolautotools-devautoconfpkg-configlibssl-dev//安装软件包build-essential注意参考内容1中菜老师原文缺少了个空格sudoapt-getinstalllibboost-all-dev//安装boost标准库(c++)sudoapt-getinstalllibqt5gui5libqt5core5alibqt5dbus5qttools5-devqttools5-dev-toolslibprotobuf-devprotobuf-compiler//安装qt5,图形用户界面应用程序开发框架sudoapt-getinstalllibqrencode-dev//安装c语言生成二维码的库sudoapt-getinstalllibminiupnpc-dev//libminiupnpc-dev软件包,theMiniUPnPclientlibrary,MiniUPnP协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。。3、下载比特币核心源码,并进行安装cd~//打开当前用户主目录一般如果没有装过,系统中是不能直接使用git命令的,需要先安装gitsudoapt-getinstallgitgitclonehttps://github.com/bitcoin/bitcoin.gitgitclone命令结果mkdirbitcoin/db4/cdbitcoin/db4/wget'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'Paste_Image.pngtar-xzvfdb-4.8.30.NC.tar.gzcddb-4.8.30.NC/build_unix/../dist/configure--enable-cxx--disable-shared--with-pic--prefix=/home/theusername/bitcoin/db4/4、构建BitcoinCore可执行文件makeinstall(如果不是root用户,需要前加sudo)makeinstall结果cd~/bitcoin/./autogen.sh./configureLDFLAGS="-L/home/theusername/bitcoin/db4/lib/"CPPFLAGS="-I/home/theusername/bitcoin/db4/include/"有一条报错我的安装过程与参考内容提到的electroman同学遇到的问题一样,试了N遍,才找到他的简书文章。没有安装libevent后面会报错,一直走不下去这里增加安装libeventsudoapt-getinstalllibevent-dev//安装libevent库再次执行,./configureLDFLAGS="-L/home/theusername/bitcoin/db4/lib/"CPPFLAGS="-I/home/theusername/bitcoin/db4/include/"看到下图这个结果:image.pngmake(非root用户需要sudo)原来使用的make-s-j5,没明白什么意思,使用的是阿里云ecs,只有1G内存,所以直接搞死了,连不上了。后来查了下,用make-j带一个参数,可以把项目进行并行编译,比如在一台双核的机器上,完全可以用make-j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。-s就是静默模式,在执行之前不输出相应的命令行信息。make了好长时间makeinstall这个很快5、测试安装结果$whichbitcoind//查找比特币核心进程位置/usr/local/bin/bitcoind如果显示命令找不到,则可能是该命令没有在bin下面,路径不对。用下面命令进行关联。SudomakeinstallDESTDIR=/usr/local/bin$whichbitcoin-cli//查找比特币命令行客户端位置/usr/local/bin/bitcoin-cli测试安装结果正常./src/qt/bitcoin-qt//打开图形化客户端QT界面,首先更新区块头,区块更新还没有开始./src/bitcoind//开启进程./src/bitcoin-cli//打开命令行客户端image.png**6、运行配置BitcoinCore$bitcoind//安装完毕,现在就要运行比特币进程了需要找到当前用户的主目录下有一个隐藏目录.bitcoin(bitcoind命令运行以后这个目录才生成,ls-a才能看见隐藏文件),创建bitcoin.conf文件,包括下述信息:rpcuser=bitcoinrpcrpcpassword=jgjgjgjg特别提醒要注意,要实现在主网运行,需要去掉配置文件中的testnet=0前面的#号,或者在bitcoind命令后面增加主网参数。通过命令行进行常见操作bitcoin-cli-getinfo//显示关于比特币网络节点、钱包、区块链数据库状态的基础信息。$bitcoin-cligetblockchaininfo//也可以使用下面的命令,看到的内容更清晰。我们看到区块同步已经完成,与btc.com实时出块高度一致$bitcoin-cliencryptwalletyuntianming//给钱包设置密码bitcoind停止后,钱包加密码和getinfo都不能成功使用backupwallet命令备份,提供文件名作为命令参数:$bitcoin-clibackupwalletwallet.backup恢复备份文件,我们使用importwallet命令。(如果你的钱包处于锁定状态,你将需要先将钱包解锁以导入备份文件):$bitcoin-cliimportwalletwallet.backup比特币客户端维护了一个地址池,地址池的大小可以用getinfo命令keypoolsize参数获取。这些地址是自动生成的,可以被用作公开接收地址或零钱地址。可以使用getaddressesbyaccount命令列出整个钱包的所有地址:$bitcoin-cligetaddressesbyaccount""使用getnewaddress命令可以获得其中的一个地址:$bitcoin-cligetnewaddress我们可以询问bitcoind客户端此地址已经接收到的比特币数额,以及指定该数额要被加到余额中所需要的确认数。下面,我们指定只需要0个确认。$bitcoin-cligetreceivedbyaddress1hvzSofGwT8cjb8JU7nBsCSfEVQX5u9CL0如果我们忽略这个命令后面的0,我们将只能在至少minconf个确认之后才能看到数额,minconf是想要某笔交易出现在余额中所设置的最少确认数。minconf设置在bitcoind配置文件指定。整个钱包接收到的交易可以通过使用listtransactions命令展示出来:$bitcoin-clilisttransactionsgetbalance命令将显示所有经过至少minconf个确认的交易加和后的余额:$bitcoin-cligetbalance关于交易的命令:gettransaction、getrawtransaction、decoderawtransaction之间的关系使用gettransaction命令显示的交易格式为简化格式。交易ID在交易确认之前并不权威。区块链中找不到交易哈希值并不意味着此笔交易没有进行。这被称作“交易延展性”,因为交易哈希值在区块确认之前是可以更改的。在确认之后txid是不变且权威的。若要得到整个交易代码并且将之解码,我们将使用两个命令:getrawtransaction和decoderawtransaction。getrawtransaction把交易哈希值(txid)当做一个参数,并且把整个交易以一个“原始”的十六进制字符串的形式返回,而这也正是交易在比特币网络上存在的形式。要解码这个十六进制字符串,我们使用decoderawtransaction命令。复制粘贴这个十六进制字符串作为decoderawtransaction的第一个参数以将整个内容解读为JSON数据格式。交易解码展示这笔交易的所有成分,包括交易的输入及输出。特别提示,gettransaction加上txid可以显示该交易的详细信息。gettransaction加上txid使用getblock命令,并把区块哈希值作为参数来查询对应的区块的详细信息。既然我们知道我们的交易在哪个区块中,我们可以使用getblock命令,并把区块哈希值作为参数来查询对应的区块:$bitcoin-cligetblock0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4{"hash":"0000000000000001b6b9a13b095e96db41c4a928b97ef2d944a9b31b2cc7bdc4","confirmations":37371,"size":218629,"height":277316,"version":2,"merkleroot":"c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e","tx":["d5ada064c6417ca25c4308bd158c34b77e1c0eca2a73cda16c737e7424afba2f","b268b45c59b39d759614757718b9918caf0ba9d97c56f3b91956ff877c503fbe","04905ff987ddd4cfe603b03cfb7ca50ee81d89d1f8f5f265c38f763eea4a21fd","32467aab5d04f51940075055c2f20bbd1195727c961431bf0aff8443f9710f81","561c5216944e21fa29dd12aaa1a45e3397f9c0d888359cb05e1f79fe73da37bd",[...hundredsoftransactions...]"78b300b2a1d2d9449b58db7bc71c3884d6e0579617e0da4991b9734cef7ab23a","6c87130ec283ab4c2c493b190c20de4b28ff3caf72d16ffa1ce3e96f2069aca9","6f423dbc3636ef193fd8898dfdf7621dcade1bbe509e963ffbff91f696d81a62","802ba8b2adabc5796a9471f25b02ae6aeee2439c679a5c33c4bbcee97e081196","eaaf6a048588d9ad4d1c092539bd571dd8af30635c152a3b0e8b611e67d1a1af","e67abc6bd5e2cac169821afc51b207127f42b92a841e976f9b752157879ba8bd","d38985a6a1bfd35037cb7776b2dc86797abbb7a06630f5d03df2785d50d5a2ac","45ea0a3f6016d2bb90ab92c34a7aac9767671a8a84b9bcce6c019e60197c134b","c098445d748ced5f178ef2ff96f2758cbec9eb32cb0fc65db313bcac1d3bc98f"],"time":1388185914,"mediantime":1388183675,"nonce":924591752,"bits":"1903a30c","difficulty":1180923195.258026,"chainwork":"000000000000000000000000000000000000000000000934695e92aaf53afa1a","previousblockhash":"0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569","nextblockhash":"000000000000000010236c269dd6ed714dd5db39d36b33959079d78dfd431ba7"}该块包含419笔交易,列出的第64笔交易(0627052b...)是Alice的咖啡付款。高度条目告诉我们这是区块链中的第277316块。使用listunspent命令去查看我们钱包中所有剩余的从之前交易中已确认的支出:$bitcoin-clilistunspentlistunspent可以使用gettxout命令来得到未花费的输出的详细细节。交易输出通常可以参考txid和vout两个指标。以下就是我们通过gettxout命令得到的结果:gettxout最后我们可以用createrawtransaction命令去建立一笔交易。createrawtransactioncreaterawtransaction命令产生了一个原始十六进制字符串,其中编码了这笔交易的诸多细节。我们可以通过decoderawtransaction命令来解码这个字符串,以确认所有的细节。参考内容:聊聊比特币(Bitcoin)客户端源码编译那些事http://www.jianshu.com/p/8b4ebd0e4b3d比特币源码研读(1)--下载与编译http://www.jianshu.com/p/58f3900fbca0
2019-03-25 | 闪电网络 12965 0 0
yuntianming
yuntianming
船员 船龄 3.4年
人人都能成为闪电网络节点:第1章安装系统
操作系统:Ubuntu操作系统,版本为16.04LTS,闪电网络:目前比特币闪电网络有三大实现:c-lightning,lnd和Eclair,本次选择c-lightning是c语言写的,源码在Github。cpu:主频2G以上,最少双核,我的是xeone2660内存:最少2G,我的是16G硬盘空间:250GB以上,我的是500GB后面闪电网络需要公网ip。欢迎测试连接1、安装前准备1.1下载进入ubuntu官网,下载。1.2制作u盘的启动盘下面制作u盘系统启动盘,推荐下面的工具:UltraISO。下载链接:https://github.com/chenhaoxiang/Java/blob/master/UltraISO/UltraISO.zip在下面选中我们需要安装的OS的镜像,双击打开。这里借用centos的图,制作方式一样启动—>写入硬盘映像…image硬盘驱动器:选择将要写入的U盘。写入方式:USB-HDD+刻录校验:最好选上image然后点写入。点是之前确保U盘中的内容已经备份好了。image开始写入硬盘映像,可能需要几分钟,耐心等待。image到这一步就是成功了,点返回。image这样就成功了,注意,如果想要以后U盘还想用这个系统安装盘。就不要去删刚刚做好了之后U盘中的任何东西。2、安装系统之前centeos我也安装了一遍,问题挺多,头疼就没有继续下去。换了ubuntu后,觉得很爽,安装程序按照下面的步骤很快就能完成。注意:操作系统要安装图形化界面。查看是否开启了ssh服务是否安装,使用命令:sudops-e|grepssh如果安装了的是会有ssh服务的,下面的图片是没有安装ssh服务如何在Ubuntu上开启SSH服务先更新资源列表,使用命令:sudoapt-getupdate首先update安装openssh-server,使用命令:sudoapt-getinstallopenssh-server检查安装openssh继续输入udops-e|grepssh查看是否安装成功,和下面图片一样看到sshd则说明安装成功。image.png测试ssh打开putty(或者其他ssh工具),输入ip地址和端口号测试ssh安装输入用户名和密码就可以登录了鸣谢文章制作CentOS7的U盘系统启动盘(转)https://blog.csdn.net/Primeprime/article/details/82182778
2019-03-25 | 闪电网络 11351 3 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day6-乔延宏】闪电网络的前世今生(全)
比特币分叉虽然搁置,但是却让两个概念声名愈震,一个是segeit2X,另外一个就是闪电网络。其实闪电网络的概念源自支付通道。支付通道就是为了方便小额高频的交易需求,由交易双方临时组建的便捷渠道。我们先来看看普通交易是怎么进行的,交易发送者构造交易,授权签名。然后将交易传播到网络,矿工挖矿成功,获得矿工费。但是针对小额高频交易,如果按照普通交易方式,一是矿工费比较高,二是不能满足高频的需求。举个例子,提供视频服务的网站,希望将视频“切分”为最短的计费时间单位,观看和收费同时进行,这样就会导致交易金额比较小,交易频次很高。由于比特币交易确认时间是10分钟,这就会导致大量的交易延迟在网络中,同时产生不菲的矿工费。我们分析下支付通道如何处理此类型交易。支付通道的基本原理分为三步:1、构造锚点交易。交易发起方构造一个多重签名的交易,接收方签名后在网络上广播,交易被挖矿,支付矿工费。这笔交易在区块链上处于锁定的共享状态,相当于在交易两方之间建立了一个状态通道。这个交易叫做锚点交易。2、构建承诺交易。之后双方交换已签名的交易,修改为初始状态,这被称为“承诺交易”。承诺交易中双方可以随时进行创建、签名和发送交易,提交结算,不需要等到通道关闭,这些信息在状态中是实时更新的。3、最终结算。高频交易完成,双方决定关闭通道,这时才向区块链提交最后的交易结算结果。下面我们看一个简单支付通道的例子。Fabian是视频网站的站长,该网站支持比特币结算。Emma喜欢追剧。当前热门大剧新更出来的一集是需要付费观看的,假设网站计费办法是每秒0.01毫比(0.00001BTC),按照每秒一笔交易,每小时36毫比。网站使用专门的处理支付通道和视频流的服务器端软件。软件包括基本的比特币钱包功能,可以创建和签署比特币交易。Emma使用软件的浏览器插件。环境具备了,双方即将开始交易,对于Emma来说,这是个激动人心的开始。让我们拭目以待。下面我们来看双方交易的具体过程:1、双方通过服务器以及客户端构建了一个2-2的多重签名地址,并且各有自己的密钥。Emma选择的这一集时长10分钟(请大家原谅Emma的口味),实际上6个毫比就够了,但是网站要求押金必须得这么多,为了追剧,Emma也只能接受,通过浏览器端的钱包支付给多重签名地址36个毫比,这笔资金实际上是设定了通道容量,也就是通道上发送的最大数量(数据量)。资金被服务器端签名确认后,并被网络广播出去。Emma期待着新剧的开始。2、此后软件服务器端和客户端的结算一直在进行,但是Emma感觉不到。Emma的客户端立即创建并签署第一笔承诺交易(承诺1号),改变通道余额,将0.01毫比归入Fabian的地址,并退回给Emma的35.99毫比。但是请注意交易只是部分被签署了(因为这是2-2的多重签名交易),当前只有Emma的签名。当服务器接收到交易时,这时才会添加第二个签名,并将交易返回给Emma并附带时长1秒的视频。这时的承诺交易代表着通道中的最新正确余额。同时在视频结束之前双方都不会将此交易广播到网络中。3、客户端继续创建并签署第二个承诺交易(承诺2号)。二号承诺交易分配一个0.2毫比的一个输出到Fabian的地址,还有一个输出为35.98毫比,作为找零返回给Emma的地址。这个新交易支付的是连续两秒的视频内容。Fabian的软件签署并返回第二个承诺交易,再增加视频的另一秒内容。4、客户端继续这样下去,发送更多的承诺交易,获得更多的时长。10分钟的实践很快就过去了,恋恋不舍中这一集结束了,Emma擦掉泪花(应该有吧),算算账观看600秒(10分钟)的视频,创建和签署600笔承诺交易。最后的承诺交易(#600)将有两个输出,将通道的余额分成两部分,分别为6毫比属于Fabian和30毫比属于Emma。最后一笔交易即为结算交易,Fabian或Emma现在可以发送最终状态交易以进行结算。向Fabian支付所有Emma消费的视频,并向Emma退还资金交易中剩余的资金。对于区块链来说,最终的结果是,只有两个交易记录在区块上:建立通道的资金交易和在两个参与者之间正确分配最终余额的结算交易。图1简单支付通道协议我们来看这样的方式是方便了交易双方,但是仔细回想,还是存在一些问题,其中最重要的就是缺乏技术手段来保证信任,最终还是依赖天真的假设:大多数人是不会欺骗的。比如:1、承诺交易中,Emma的找零需要Fabian签名之后才能拿回来,万一Fabian不见了呢?2、Emma可以在过程中可以随时将承诺交易终止并广播在网络上,这对Fabian是不公平的。简单支付通道的最大的问题是缺乏技术手段来保证信任,系统必须提供对双方公平的手段保证信任才是解决问题之道。那么面对Emma认为自己的找零回收可能有风险,Fabian也认为对方可以随时关闭通道将交易广播到网络,如何解决呢?这两个问题都可以用时间锁(timelock)来解决。Emma在构造锚点交易的时候,同时构造另外一笔交易叫退款交易。这个锚点交易不给对方,只把退款交易发给对方,并获得对方的签名。这个退款交易成为序号为1的承诺交易,其中的交易级时间锁(nLocktime)明确了通道的最长生命期(以时间或者区块高度为单位),比如这个通道的最长存活时间为30天或者最多存活至T+4320个区块(T为当前值)。所有之后双方签署的承诺交易必须在通道存活时间内才有效。这样Emma就会无所顾忌地发送自己的锚点交易和后续的承诺交易,因为她知道自己的找零退款不会出现问题,即使Fabian消失自己也能在通道存活结束后拿到。后续的承诺交易都会被时间锁锁进未来时间点,每一个承诺交易都会在nLocktime规定的时间到期前被赎回。通常情况下,交易双方在后续分承诺交易完成之后,优雅地决定关闭通道,将最终的交易结果传播到网络上。任何一方想不经过对方统一提前结束是不允许的,因为受通道存活时间的限制。图2每个承诺交易设置较短的时间锁,允许在它在之前的承诺变为有效前被花费其实这里提到的带有时间锁的承诺交易就相当于在支付通道中增加了智能合约功能。基于时间锁的智能合约可以从技术上杜绝任意一方可能的欺骗。在支付通道中还支持使用脚本级时间锁定,来构建更灵活,有用和复杂的状态通道。虽然时间锁解决了Emma和Fabian的担忧,但是如果用作商业级的应用,还是存在一些问题:1、为了容纳更过的承诺交易,如果通道存活周期过长,万一交易中的一方消失,另一方要一直等待到通道声明周期结束时才能拿回自己的找零,这样的时间商业应用中也是不可接受的。2、对于商业级应用,通道存活周期使用区块作为单位容量还是太小,如果大量的承诺交易在1个区块时间间隔内,将导致开发人员大量的负担。时间锁作为商业级应用面临的问题,一是通道存活周期过长,会发生一方的退款长期被占用的问题,二是周期过短,容纳的承诺交易又过少的问题。那么是否可以换个思路,不通过时间锁这种方式。处理之前已经产生的承诺交易最好的办法是明确撤销它,但是这种想法和比特币交易原则是违背的,已经产生的交易不可能取消。那么是否可以不取消,把这个交易改造为不可用状态?建立这样一种结算交易,双方一致认可最后的余额,并且愿意承担最终实现余额。然后给予交易双方一个撤销密钥,如果对方试图欺骗,可以用来进行惩罚。为了解释撤销密钥,通过以下的例子进行说明。有两个交易所,一个在美国叫Irene,另外一个叫Hitesh在印度。双方有密切的业务往来,印度Hitesh的客户经常与美国Irene的客户交易比特币,当前双方是在主链上进行交易,速度慢,还得支付矿工费,因此希望建设自己的支付通道。Hitesh发起2-2的多重签名交易建立支付通道,双方各自向通道支付5个比特币作为初始余额。具体来说,就是双方发起的不是一个简单的承诺交易,Hitesh和Irene各自创造了两个不对称的承诺交易。Hitesh发起的交易内容是支付给Irene5个比特币,找零给自己5个比特币,但是找零只能在1000个区块的时间锁之后才能兑现。同样Irene发起的交易内容是支付给Hitesh5个比特币,找零给自己5个比特币,找零也只能在1000个区块的时间锁之后才能兑现。这样一来,双方各有一笔承诺交易,该承诺交易的输入是由对方签署的。在任何时候,持有承诺交易的一方都可以签字(完成2-2签名)并进行广播。然而,如果他们广播承诺交易,承诺交易会立即支付对方,而他们自己的找零必须等待时间锁到期。这样通过强制执行赎回拖延,对单方面广播承诺交易一方进行轻微惩罚。图3不对称的承诺交易大家可能注意到了,我们上文不是说了时间锁不适合商业级应用,怎么这里还使用时间锁了呢?双方的承诺交易都有这个时间锁的限制,造成输出的“延迟”。也就是该输出的兑换脚本允许一方在1000个区块后兑换它,除了这个条件外我们再增加一个例外条件:就是另一方如果拥有撤销密钥也可兑换它。所以当Hitesh为Irene签署承诺交易时,他将把第二个输出定义为在1000块之后可输出支付给自己,或者是任何可以出示撤销密钥的人。Hitesh构建了这个交易,并创建了一个由他秘密保管的撤销密钥。当他准备转移到新的通道状态并希望撤销这一承诺时,他才会把撤销密钥透露给Irene。Irene可以毫无顾忌地签署这笔交易,因为一旦交易被发送,自己的款项将立即收到。Hitesh持有交易,并且明确知道如果自己在单方通道关闭时发送到网络,他将不得不等待1000个块才能获得支付。之后通道进入下一个状态,Hitesh必须在Irene同意签署下一个承诺交易之前撤销此承诺交易。要做到这一点,他所要做的就是将撤销密钥发送给Irene。一旦Irene拥有这一承诺的撤销密钥,她就可以自信地签署下一个承诺交易。她知道,如果Hitesh试图通过发布先前的承诺交易来作弊,她可以使用撤销密钥来兑换Hitesh的延迟输出。如果Hitesh作弊,Irene会得到所有双方的输出。撤销协议是双边的,这意味着在每一轮中,随着通道状态的进一步发展,双方交换新的承诺,交换用于之前承诺的撤销密钥,并签署彼此的承诺交易。当他们接受新的状态时,他们通过给予对方必要的撤销密钥来惩罚任何作弊行为,使先前的状态不可能再被使用。这里面我们需要重点关注的是,这些承诺交易是不对称的,所以每一方所持的承诺交易都迫使他们等待兑换。至关重要的是,在签署新的承诺交易之前,他们必须首先交换撤销密钥以使先前的承诺无效。带有相对时间锁的不对称可撤销承诺是实现支付通道的更好方法,这其实是先被作为闪电网络的一部分提出的。闪电网络(LN)是由JosephPoon和ThadeusDryja于2015年2月首次提出,其基础就是前面的支付通道的概念。它是指端到端连接的双向支付通道的可路由网络。它在不可信的网络中允许交易发起者在不同通道之间进行寻路到接收者。我们再看一个例子。在一个有不同通道组成的网络中,有5个互不相识的参与者:Alice,Bob,Carol,Diana,andEric。这些参与者按照上述顺序已经组成了支付通道,如下图所示。图4参与者之间的支付通道我们的任务是:Alice要支付给Eric1个比特币。当然这只是个测试,所以没有采用和Eric之间建立支付通道,也没有采用在主链上直接进行交易。下面我们来看下闪电网络的路由步骤:Alice的钱包支持LN,LN根据路由算法找到了到达Eric的路由,这需要经过4跳(Bob,Carol,Diana,Eric)才能到达。图5闪电网络路由步骤1、Eric的支持LN钱包使用随机数生成器创建一个密钥R。这个密钥是收款凭证,因此不能泄露给任何人。但是Eric把密钥R对应的哈希H,发送到Alice。这里补充一个概念:哈希时间锁合约HTLC。收款人将首先创建一个秘密(secret)R,然后计算这个R的哈希H。知道秘密R的任何人可以用它来兑换输出。如果秘密没有被透露,但是时间超时,HTLC的付款人可以得到“退款”。2、Alice构造一个HTLC,支付1.003比特币到哈希H,时间限制为10个区块时间(T+10)。多余的0.003将用于补偿参与支付路由的中间节点。Alice将此HTLC提供给Bob,从和Bob之间的通道余额中扣除1.003比特币,并将其提交给HTLC。该HTLC具有以下含义:“如果Bob知道秘密R,Alice将其通道余额的1.003支付给Bob,或者如果超过10个区块时间后,则退还入Alice的余额”。3、Bob在和Carol的支付通道上构建了一个HTLC。Bob的HTLC提交1.002比特币到哈希H共9个区块时间,这个HTLC的含义是如果Carol有秘密R,她可以拥有这1.002个比特币。Bob知道自己如果在9个区块期限内拿到R,就可以拥有1.003个比特币,如果没有,可以赚取差价0.001个比特币作为辛苦费。4、同样Carol现在有一个承诺,如果她在接下来的9个区块时间内获得R,她可以获取Bob的锁定1.002比特币。现在她可以在她与Diana的通道上构建HTLC承诺。她提交了一个1.001比特币的HTLC到哈希H,共计8个区块时间,如果Diana有秘密R,她就可以兑换。5、最后,Diana可以提供给Eric一个HTLC,承诺1比特币,7个区块时间,到哈希H。6、这时Eric拥有秘密R,他可以获取Diana提供的HTLC。他将R发送给Diana,并获取1个比特币,添加到他的通道余额中。7、现在,Diana有秘密R,因此,她现在可以获取来自Carol的HTLC。Diana将R发送给Carol,并将1.001比特币添加到其通道余额中。8、通过路由回传,秘密R允许每个参与者获取未完成的HTLC。Carol从Bob那里获取1.002个比特币。9、最后,Bob获取来自Alice的HTLC。获得了1.003个比特币。由于自己已经通道余额中已经减少了1.002个,实际上自己赚了0.01个。通过闪电网络,Alice间接向Eric支付了1比特币。付款路线中的中间方不必要互相信任。在他们的通道内做一个短时间的资金承诺,他们可以赚取一小笔费用,唯一的风险是,如果通道关闭或路由付款失败,退款有段时间不长的延迟。————————————参考内容:《精通比特币第二版》第12章。
2017-11-19 | 读书会 11059 5 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day5-乔延宏】闪电网络的前世今生:支付通道5
为什么还要使用时间锁呢?刚才不是说不适合吗?且听我慢慢道来。双方的承诺交易都有这个时间锁的限制,造成输出的“延迟”。也就是该输出的兑换脚本允许一方在1000个区块后兑换它,除了这个条件外我们再增加一个例外条件:就是另一方如果拥有撤销密钥也可兑换它。所以当Hitesh为Irene签署承诺交易时,他将把第二个输出定义为在1000块之后可输出支付给自己,或者是任何可以出示撤销密钥的人。Hitesh构建了这个交易,并创建了一个由他秘密保管的撤销密钥。当他准备转移到新的通道状态并希望撤销这一承诺时,他才会把撤销密钥透露给Irene。Irene可以毫无顾忌地签署这笔交易,因为一旦交易被发送,自己的款项将立即收到。Hitesh持有交易,并且明确知道如果自己在单方通道关闭时发送到网络,他将不得不等待1000个块才能获得支付。之后通道进入下一个状态,Hitesh必须在Irene同意签署下一个承诺交易之前撤销此承诺交易。要做到这一点,他所要做的就是将撤销密钥发送给Irene。一旦Irene拥有这一承诺的撤销密钥,她就可以自信地签署下一个承诺交易。她知道,如果Hitesh试图通过发布先前的承诺交易来作弊,她可以使用撤销密钥来兑换Hitesh的延迟输出。如果Hitesh作弊,Irene会得到所有双方的输出。撤销协议是双边的,这意味着在每一轮中,随着通道状态的进一步发展,双方交换新的承诺,交换用于之前承诺的撤销密钥,并签署彼此的承诺交易。当他们接受新的状态时,他们通过给予对方必要的撤销密钥来惩罚任何作弊行为,使先前的状态不可能再被使用。这里面我们需要重点关注的是,这些承诺交易是不对称的,所以每一方所持的承诺交易都迫使他们等待兑换。至关重要的是,在签署新的承诺交易之前,他们必须首先交换撤销密钥以使先前的承诺无效。带有相对时间锁的不对称可撤销承诺是实现支付通道的更好方法,这其实是先被作为闪电网络的一部分提出的。下一篇就是关于闪电网络的,敬请期待:闪电网络的前世今生:闪电网络路由————————————参考内容:《精通比特币第二版》第12章。
2017-11-18 | 读书会 2981 0 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day4-乔延宏】闪电网络的前世今生:支付通道4
上文提到时间锁作为商业级应用面临的问题,一是通道存活周期过长,会发生一方的退款长期被占用的问题,二是周期过短,容纳的承诺交易又过少的问题。那么是否可以换个思路,不通过时间锁这种方式。处理之前已经产生的承诺交易最好的办法是明确撤销它,但是这种想法和比特币交易原则是违背的,已经产生的交易不可能取消。那么是否可以不取消,把这个交易改造为不可用状态?建立这样一种结算交易,双方一致认可最后的余额,并且愿意承担最终实现余额。然后给予交易双方一个撤销密钥,如果对方试图欺骗,可以用来进行惩罚。为了解释撤销密钥,通过以下的例子进行说明。有两个交易所,一个在美国叫Irene,另外一个叫Hitesh在印度。双方有密切的业务往来,印度Hitesh的客户经常与美国Irene的客户交易比特币,当前双方是在主链上进行交易,速度慢,还得支付矿工费,因此希望建设自己的支付通道。Hitesh发起2-2的多重签名交易建立支付通道,双方各自向通道支付5个比特币作为初始余额。具体来说,就是双方发起的不是一个简单的承诺交易,Hitesh和Irene各自创造了两个不对称的承诺交易。Hitesh发起的交易内容是支付给Irene5个比特币,找零给自己5个比特币,但是找零只能在1000个区块的时间锁之后才能兑现。同样Irene发起的交易内容是支付给Hitesh5个比特币,找零给自己5个比特币,找零也只能在1000个区块的时间锁之后才能兑现。这样一来,双方各有一笔承诺交易,该承诺交易的输入是由对方签署的。在任何时候,持有承诺交易的一方都可以签字(完成2-2签名)并进行广播。然而,如果他们广播承诺交易,承诺交易会立即支付对方,而他们自己的找零必须等待时间锁到期。这样通过强制执行赎回拖延,对单方面广播承诺交易一方进行轻微惩罚。图1不对称的承诺交易大家可能注意到了,我们上文不是说了时间锁不适合商业级应用,怎么这里还使用时间锁了呢?卖个关子,请大家关注下篇文章:闪电网络的前世今生:支付通道5————————————参考内容:《精通比特币第二版》第12章。
2017-11-17 | 读书会 3315 0 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day3-乔延宏】闪电网络的前世今生:支付通道3
我们上篇文章结尾提到简单支付通道的最大的问题是缺乏技术手段来保证信任,系统必须提供对双方公平的手段保证信任才是解决问题之道。那么面对Emma认为自己的找零回收可能有风险,Fabian也认为对方可以随时关闭通道将交易广播到网络,如何解决呢?这两个问题都可以用时间锁(timelock)来解决。Emma在构造锚点交易的时候,同时构造另外一笔交易叫退款交易。这个锚点交易不给对方,只把退款交易发给对方,并获得对方的签名。这个退款交易成为序号为1的承诺交易,其中的交易级时间锁(nLocktime)明确了通道的最长生命期(以时间或者区块高度为单位),比如这个通道的最长存活时间为30天或者最多存活至T+4320个区块(T为当前值)。所有之后双方签署的承诺交易必须在通道存活时间内才有效。这样Emma就会无所顾忌地发送自己的锚点交易和后续的承诺交易,因为她知道自己的找零退款不会出现问题,即使Fabian消失自己也能在通道存活结束后拿到。后续的承诺交易都会被时间锁锁进未来时间点,每一个承诺交易都会在nLocktime规定的时间到期前被赎回。通常情况下,交易双方在后续分承诺交易完成之后,优雅地决定关闭通道,将最终的交易结果传播到网络上。任何一方想不经过对方统一提前结束是不允许的,因为受通道存活时间的限制。图1每个承诺交易设置较短的时间锁,允许在它在之前的承诺变为有效前被花费其实这里提到的带有时间锁的承诺交易就相当于在支付通道中增加了智能合约功能。基于时间锁的智能合约可以从技术上杜绝任意一方可能的欺骗。在支付通道中还支持使用脚本级时间锁定,来构建更灵活,有用和复杂的状态通道。虽然时间锁解决了Emma和Fabian的担忧,但是如果用作商业级的应用,还是存在一些问题:1、为了容纳更过的承诺交易,如果通道存活周期过长,万一交易中的一方消失,另一方要一直等待到通道声明周期结束时才能拿回自己的找零,这样的时间商业应用中也是不可接受的。2、对于商业级应用,通道存活周期使用区块作为单位容量还是太小,如果大量的承诺交易在1个区块时间间隔内,将导致开发人员大量的负担。这个新问题如何解决,敬请期待下一篇:闪电网络的前世今生:支付通道4。————————————参考内容:《精通比特币第二版》第12章。
2017-11-15 | 读书会 3562 0 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day2-乔延宏】闪电网络的前世今生:支付通道2
上文介绍了支付通道的基本原理,之后Emma安装了浏览器客户端,准备通过支付通道尝试观看自己期待已久的新剧。下面我们来看双方交易的具体过程:1、双方通过服务器以及客户端构建了一个2-2的多重签名地址,并且各有自己的密钥。Emma选择的这一集时长10分钟(请大家原谅Emma的口味),实际上6个毫比就够了,但是网站要求押金必须得这么多,为了追剧,Emma也只能接受,通过浏览器端的钱包支付给多重签名地址36个毫比,这笔资金实际上是设定了通道容量,也就是通道上发送的最大数量(数据量)。资金被服务器端签名确认后,并被网络广播出去。Emma期待着新剧的开始。2、此后软件服务器端和客户端的结算一直在进行,但是Emma感觉不到。Emma的客户端立即创建并签署第一笔承诺交易(承诺1号),改变通道余额,将0.01毫比归入Fabian的地址,并退回给Emma的35.99毫比。但是请注意交易只是部分被签署了(因为这是2-2的多重签名交易),当前只有Emma的签名。当服务器接收到交易时,这时才会添加第二个签名,并将交易返回给Emma并附带时长1秒的视频。这时的承诺交易代表着通道中的最新正确余额。同时在视频结束之前双方都不会将此交易广播到网络中。3、客户端继续创建并签署第二个承诺交易(承诺2号)。二号承诺交易分配一个0.2毫比的一个输出到Fabian的地址,还有一个输出为35.98毫比,作为找零返回给Emma的地址。这个新交易支付的是连续两秒的视频内容。Fabian的软件签署并返回第二个承诺交易,再增加视频的另一秒内容。4、客户端继续这样下去,发送更多的承诺交易,获得更多的时长。10分钟的实践很快就过去了,恋恋不舍中这一集结束了,Emma擦掉泪花(应该有吧),算算账观看600秒(10分钟)的视频,创建和签署600笔承诺交易。最后的承诺交易(#600)将有两个输出,将通道的余额分成两部分,分别为6毫比属于Fabian和30毫比属于Emma。最后一笔交易即为结算交易,Fabian或Emma现在可以发送最终状态交易以进行结算。向Fabian支付所有Emma消费的视频,并向Emma退还资金交易中剩余的资金。对于区块链来说,最终的结果是,只有两个交易记录在区块上:建立通道的资金交易和在两个参与者之间正确分配最终余额的结算交易。我们来看这样的方式是方便了交易双方,但是仔细回想,还是存在一些问题,其中最重要的就是缺乏技术手段来保证信任,最终还是依赖天真的假设:大多数人是不会欺骗的。比如:1、承诺交易中,Emma的找零需要Fabian签名之后才能拿回来,万一Fabian不见了呢?2、Emma可以在过程中可以随时将承诺交易终止并广播在网络上,这对Fabian是不公平的。那么如何解决呢?请期待我们下一篇:闪电网络的前世今生:支付通道3。————————————参考内容:《精通比特币第二版》第12章。
2017-11-14 | 读书会 3012 1 0
yuntianming
yuntianming
船员 船龄 3.4年
【三期二团Day1-乔延宏】闪电网络的前世今生:支付通道1
比特币分叉虽然搁置,但是却让两个概念声名愈震,一个是segeit2X,另外一个就是闪电网络。其实闪电网络的概念源自支付通道。支付通道就是为了方便小额高频的交易需求,由交易双方临时组建的便捷渠道。我们先来看看普通交易是怎么进行的,交易发送者构造交易,授权签名。然后将交易传播到网络,矿工挖矿成功,获得矿工费。但是针对小额高频交易,如果按照普通交易方式,一是矿工费比较高,二是不能满足高频的需求。举个例子,提供视频服务的网站,希望将视频“切分”为最短的计费时间单位,观看和收费同时进行,这样就会导致交易金额比较小,交易频次很高。由于比特币交易确认时间是10分钟,这就会导致大量的交易延迟在网络中,同时产生不菲的矿工费。我们分析下支付通道如何处理此类型交易。支付通道的基本原理分为三步:1、构造锚点交易。交易发起方构造一个多重签名的交易,接收方签名后在网络上广播,交易被挖矿,支付矿工费。这笔交易在区块链上处于锁定的共享状态,相当于在交易两方之间建立了一个状态通道。这个交易叫做锚点交易。2、构建承诺交易。之后双方交换已签名的交易,修改为初始状态,这被称为“承诺交易”。承诺交易中双方可以随时进行创建、签名和发送交易,提交结算,不需要等到通道关闭,这些信息在状态中是实时更新的。3、最终结算。高频交易完成,双方决定关闭通道,这时才向区块链提交最后的交易结算结果。下面我们看一个简单支付通道的例子。Fabian是视频网站的站长,该网站支持比特币结算。Emma喜欢追剧。当前热门大剧新更出来的一集是需要付费观看的,假设网站计费办法是每秒0.01毫比(0.00001BTC),按照每秒一笔交易,每小时36毫比。网站使用专门的处理支付通道和视频流的服务器端软件。软件包括基本的比特币钱包功能,可以创建和签署比特币交易。Emma使用软件的浏览器插件。环境具备了,双方即将开始交易,对于Emma来说,这是个激动人心的开始。让我们拭目以待。敬请期待下篇:闪电网络的前世今生:支付通道2——————————————————————参考内容:《精通比特币第二版》第12章。
2017-11-12 | 读书会 2627 1 0
yuntianming
yuntianming
船员 船龄 3.4年
《精通比特币第二版》第三章比特币客户端
Bitcoin是一个开源项目,源代码可以根据开放(MIT)许可证提供,可免费下载并用于任何目的。开源意味着不仅仅是自由使用。这也意味着比特币是由一个开放的志愿者社区开发的。起初这个社区只有中山聪。到2016年,比特币的源代码有超过400个贡献者,大约十几位开发人员几乎全职工作,几十名开发人员兼职。任何人都可以为代码贡献-包括你!当由中本聪创建比特币时,软件实际上是在后来大名鼎鼎的[satoshi_whitepaper]白皮书之前完成的。中本聪想在写作之前确保它有效工作。那么这个第一个实践,就叫做“比特币(Bitcoin)”或者“Satoshi客户”,实际上已经被大大的修改和改进了。它已经演变成所谓的比特币核心,以区别于其他兼容的实现方式。比特币核心是比特币系统的参考实现,这意味着它是如何实施的权威参考。BitcoinCore实现了比特币的所有方面,包括钱包,交易和区块验证引擎,以及P2P网络中的完整网络节点。警示即使BitcoinCore包含钱包的参考实现,但这并不意味着可以用作用户或应用程序的生产钱包。建议应用程序开发人员使用现代标准(如BIP-39和BIP-32)构建钱包(请参阅[mnemonic_code_words]和[hd_wallets])。BIP就是比特币改进提案(BitcoinImprovementProposal)。下图为比特币核心的架构。上,选择“下载ZIP”。或者,使用git命令行在系统上创建源代码的本地副本。提示在本章的许多例子中,我们将使用操作系统的命令行界面(也称为“shell”),通过“terminal”应用程序访问。shell将显示提示你键入命令,并且shell反馈一些文本和一个新的提示您的下一个命令。提示符可能在您的系统上看起来不同,但在以下示例中,它由$符号表示(非root用户)。在示例中,当您在$符号后面看到文本时,不要键入$符号,而是在其后面键入命令,然后按Enter键执行该命令。在示例中,每个命令下面的行是操作系统对该命令的响应。当你看到下一个$前缀时,应该继续输入下一个新的命令,可以一直重复这个过程。在本例中,我们使用git命令来创建源代码的本地副本(“clone”):$gitcloneCloninginto'bitcoin'...remote:Countingobjects:66193,done.remote:Total66193(delta0),reused0(delta0),pack-reused66193Receivingobjects:100%(66193/66193),63.39MiB|574.00KiB/s,done.Resolvingdeltas:100%(48395/48395),done.Checkingconnectivity...done.$提示Git是最广泛使用的分布式版本控制系统,是任何软件开发人员工具包的重要组成部分。您可能需要在操作系统上安装git命令或git的图形用户界面。当git克隆操作完成后,您将在目录比特币中拥有源代码存储库的完整本地副本。在提示符下键入“cdbitcoin”,进入为此目录:$cdbitcoin超过长度了。看链接吧。http://www.jianshu.com/p/4781df731d15
2017-10-16 | BTC/比特币 4346 0 0