互联网金融源码
⑴ 源码资本|曹毅:以“码会”笼住“江湖人”,新基金靠三种武器立足
-Begin-
2014年4月曹毅找到王兴、张一鸣,告诉他们自己打算成立一只基金。一个月后,名为“源码资本”的新基金公司完成了1亿美元的募集。即使是在“全民PE”火热的2009年,这样的募资速度也堪称惊人。
不到一年,源码资本二期基金也快速募集完成。1.5亿美元、2亿人民币的基金规模只用了两个月。除了之前的LP,7家A股上市公司的CEO全新加入曹毅构建的“码会”。在曹毅眼中,商业的“棋局”正变成一种资源合力和智力游戏。对接起LP和创业者的,是这张“码会”身份认证。
以“码会”笼住“江湖人”
在北京风沙肆虐的傍晚,略带倦色的曹毅快速吃完1个小时前订好的快餐开始接受记者的采访。自从成立源码资本后,这种状态已经成为一种常态。“一周飞五个地方,一年休息不到五天,”他的同事这样形容。
对于互联网的“痴迷”或许可以解释目前身为80后的曹毅的这种状态。这种“痴迷”正成为一种“纽带”开始连接起曹毅和他周围的那个圈子。王兴、张一鸣、姚劲波、李想、李一男......正是因为这种纽带开始聚集到源码的周围。“一期基金我们只用一个月就募完了,这些LP每个人就是见了个面,甚至有的只是打了个电话”曹毅回忆到。
在这个圈子里,身份是一种需要江湖认可的东西。“在他所在那个领域里面有明显的成就,可以说在江湖上面都是有名号的,都有自己独特的一套方法论。而且这些人基本都在一线,对行业的这种纽带还是非常紧密的。”曹毅这样描述着源码的LP们。
在投资圈锤炼多年的曹毅正在触碰到创业投资的真谛:将成功的创业者聚集在圈子里,用资本以及人脉来撬动新的创业机会。这一点在硅谷早已得到验证:比如创业教父Paul Grahamy以及科技偶像Kevin Rose等都曾在知名互联网公司任职,深谙互联网精髓,转型投资也都获得了不错的收益。
对于创业公司而言,这样的LP背景的确具有诱惑力。曹毅认为,美国创投圈50年的发展已经证明创业的成功所需要具备的要素越来越多,也可以说每个创业者得到的武器越来越多了。但是正因为提供武器的人越来越多,所以创业的红海实际上更加残酷。创业者需要获取更多的资源和帮助。源码的LP正是这样一种武器。
他的胃口并不仅限于此。源码的二期基金同样只用了2个月时间完成募集。1.5亿美金和2亿人民币的规模印证了曹毅对于资本市场的判断。除了原有的一些美股港股、机构投资人外,源码还引入了A股知名的TMT公司。蓝色光标、神州泰岳等成为了码会LP群体里的新的“入会者”。
风口中的“捕风者”
曾在红杉任职副总裁的曹毅,自然也深谙沈南鹏的“赛道”投资法。曹毅认为,互联网变得越来越大,随着移动互联网时代的到来,互联网的赛道机会正在像白垩纪的物种大爆发一样出现“井喷”。在这其中诞生出许多子赛道机会。
首先是传统行业的互联网化。曹毅以源码投资的一亩田为例,农业是互联网渗透水平最低的行业。尽管早期也有一些农业报价的网站,但非常初级。然而到了2014年,随着智能手机在农民中的普及和网络购物的盛行,农业大规模的互联网化开始成为可能。一亩田所做的正是利用互联网来消除原本的农业信息不对称问题。复杂的流通环节被互联网所取代,买卖双方则可以获得更好的产品和利润。
此前,一亩田花了两个多月时间帮助河南新苗销售完了滞销大葱。这被曹毅视为一次经典的互联网改造传统农业案例。互联网改造传统农业,改造的方式是透过信息化的方式,使得信息传播更加有效,中间环节更少,资源配置得到优化。
其次是金融的互联网化。趣分期是源码投资的互联网金融行业中一个代表性企业。看似简单的学生贷款其实是一个巨大的市场。曹毅认为,金融的需求是始终存在的,传统金融并不能解决很多需求,其中最大一块就是学生市场:学生具有巨大的消费需求,但收入受限。趣分期的出现其实是解决了一个供需矛盾,金融就是时间和空间的转化。学生的提前消费同时也可能提升其资源利用率。
第三是O2O。曹毅以源码投资的PP租车为例:北京有400万的车,每天空闲的可能有四分之一,另外一端有300多万的人,有驾照没有车。其实是一个巨大的供求不匹配,PP租车所做的平台,使得被闲置的这些车这些资源得到了更好的利用。
曹毅认为,从这三个赛道上可以看到了非常多的行业可以通过互联网去改变,资源也可以更加有效地得到配置。“因为这些都是社会的底层设施,是刚需。因此而产生出来的巨大价值,我相信会很持续。
新基金的“打法”
在以互联网基因为纽带建立的“码会”中,源码的担子并不轻。梳理企业战略和融资战略是曹毅每天最重要的两项工作。“作为VC,最重要的事情是帮助创业公司做正确的事情,只有将正确的事不断叠加,创业公司和VC才能实现双赢。”
这并不简单。在投资趣分期时,曹毅就曾经历了困扰。在趣分期发展壮大后,面对的诱惑也多起来。除了大学生外,趣分期还曾开辟了注入家庭用户、白领等用户的贷款业务,多条业务线使得趣分期的业务总量很大,但问题也随之而来。
有一天曹毅找到趣分期CEO罗敏,告诉他必须要坐下来好好聊聊。在源码会议室里,曹毅在黑板上详细阐述了他对于目前趣分期发展的看法。他在黑板上画了一个矩阵,左边是不同的资产类型,比如信用贷、抵押贷。纵轴是用户、大学生、白领、家庭。曹毅告诉罗敏,每个细分市场都需要大量的人力与物力投入,而且每个市场的金融消费属性也不相同。对于趣分期来说,最重要的目标是首先在某一领域达到王者地位。
作为投资人,曹毅坦言,如果公司有几块业务,每块业务都是第3名,那么这个公司根本就不值钱。因为每个跑道都是赢家通吃。因此,对于创业公司而言,最重要的就是聚焦。必须在某个跑道上成为王者,必须把所有的资源投入到最重要的业务上。
曹毅告诉罗敏,大学生市场并非已经饱和,很多业务可以细化,这样是做加法而并非延伸到更多业务去分散资源做减法。“这是创业公司容易犯的错误,当你有资源的时候你会跑到第一名,这时候你会面对很多诱惑,你需要控制住自己,有时候甚至要去砍掉业务。作为VC,应该帮助创业者做这样的梳理和判断。”
除了战略决策,融资同样重要。在融资圈里,流行着B轮和C轮死的说法。意思是当创业公司无法在成长阶段拿到B轮或者C轮融资时,很可能会半路夭折。在曹毅看来,创业竞争的惨烈,使得融资周期大幅缩短。大概2-3个季度创业公司就必须拿到下一轮融资。但融资的残酷性显而易见。2014年据不完全估算,有2000-3000家已融资企业无法拿到下一轮融资,在C轮阶段,50%-60%的企业将会被淘汰。因此源码重要的工作之一就是帮助投资企业拿到下一轮融资,持续“输血”。
曹毅认为,时间窗是一个客观和实际的问题,如果不能在与竞争对手的角逐中持续“输血”,那么错过时间周期可能就意味着灭亡。这也印证了曹毅之前所做的决断。吸引更多具有互联网基因的个人和企业成为源码二期基金LP,这保证了源码投资企业的融资可持续性。据曹毅介绍,目前所投企业中65%的后续融资通过源码完成,这也让其在早期投资中更加得心应手。
-end-
⑵ 国家关于互联网金融有哪些法律规定
一、刑法
互联网金融准入门槛低,仅仅凭借一台电脑,一套200元采购来的源代码就可以搭建一个P2P网贷平台,因此不可避免的出现了一些骗子利用P2P网贷平台恶意骗款跑路事件,给投资者造成了巨大的损失。利用互联网进行非法活动的,可能涉及如下犯罪:
1、《刑法》第一百七十六条【非法吸收公众存款罪】
非法吸收公众存款或者变相吸收公众存款,扰乱金融秩序的,处三年以下有期徒刑或者拘役,并处或者单处二万元以上二十万元以下罚金;数额巨大或者有其他严重情节的,处三年以上十年以下有期徒刑,并处五万元以上五十万元以下罚金。单位犯前款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照前款的规定处罚。
2、《刑法》第一百九十二条【集资诈骗罪】
以非法占有为目的,使用诈骗方法非法集资,数额较大的,处五年以下有期徒刑或者拘役,并处二万元以上二十万元以下罚金;数额巨大或者有其他严重情节的,处五年以上十年以下有期徒刑,并处五万元以上五十万元以下罚金;数额特别巨大或者有其他特别严重情节的,处十年以上有期徒刑或者无期徒刑,并处五万元以上五十万元以下罚金或者没收财产。
二、专门监管法规
1、第三方支付法规
2010年6月4日,中国人民银行发布《非金融机构支付服务管理办法》(〔2010〕第2号),该办法第一条规定该办法的制定目的是为促进支付服务市场健康发展,规范非金融机构支付服务行为,防范支付风险,保护当事人的合法权益。
该办法第二条明确了本办法所称非金融机构支付服务,是指非金融机构在收付款人之间作为中介机构提供下列部分或全部货币资金转移服务:(一)网络支付;(二)预付卡的发行与受理;(三)银行卡收单;(四)中国人民银行确定的其他支付服务。该办法所称网络支付,是指依托公共网络或专用网络在收付款人之间转移货币资金的行为,包括货币汇兑、互联网支付、移动电话支付、固定电话支付、数字电视支付等。本办法所称预付卡,是指以营利为目的发行的、在发行机构之外购买商品或服务的预付价值,包括采取磁条、芯片等技术以卡片、密码等形式发行的预付卡。该办法所称银行卡收单,是指通过销售点(POS)终端等为银行卡特约商户代收货币资金的行为。《非金融机构支付服务管理办法》是第三方支付的重要监管法规。
【编者按,此后,虽先后又出台了《支付机构预付卡业务管理办法》、《支付机构客户备付金存管办法》、《银行卡收单业务管理办法》,以及征求意见的《支付机构互联网支付业务管理办法》、《关于手机支付业务发展的指导意见》等具体支付业务管理规定,但相关规定均以2010年的管理办法为基础,第三方支付的制度架构未发生根本变化。】
2、P2P监管法规
2011年8月23日,银监会发布《关于人人贷有关风险提示的通知》银监办发[2011]254号,该通知指出在当前银行信贷偏紧情况下,人人贷(PeertoPeer,简称P2P)信贷服务中介公司呈现快速发展态势。这类中介公司收集借款人、出借人信息,评估借款人的抵押物,如房产、汽车、设备等,然后进行配对,并收取中介服务费。有关媒体对这类中介公司的运作及影响作了大量报道,引起多方关注。对此,银监会组织开展了专门调研,发现大量潜在风险并予以提示。由此可见,该通知只是对人人贷的一个风险提示文件。
在2013年11月25日举行的九部委处置非法集资部际联席会议上,央行对P2P网络借贷行业非法集资行为进行了清晰的界定,主要包括三类情况:资金池模式;不合格借款人导致的非法集资风险以及庞氏骗局。
3、众筹融资法规
美国证券交易委员会(SEC)近期批准了对众筹融资进行监管的草案,面向公众的众筹融资在2012年年初得到《促进创业企业融资法案》(Jumpstart
Our BusinessStartups Act,简称JOBS法案)的认可,即在互联网上为各种项目、事业甚至公司筹集资金得到法律确认。这是美国政府对众筹融资进行监管的重要措施。
2013年9月16日,中国证监会通报了淘宝网上部分公司涉嫌擅自发行股票的行为并予以叫停。叫停依据是《国务院办公厅关于严厉打击非法发行股票和非法经营证券业务有关问题的通知》(国办发[2006]99号)规定,“严禁任何公司股东自行或委托他人以公开方式向社会公众转让股票”。至此,被称为中国式“众筹”,即利用网络平台向社会公众发行股票的行为被首次界定为“非法证券活动”。虽然众筹模式有利于解决中小微企业融资难的顽疾,但考虑到现行法律框架,国内的众筹网站不能简单复制美国模式,必须走出一条适合中国国情的众筹之路才更具现实意义。
依据《最高人民法院关于审理非法集资刑事案件具体应用法律若干问题的解释》的规定,众筹模式在形式上几乎很容易压着违法的红线,即未经许可、通过网站公开推荐、承诺一定的回报、向不特定对象吸收资金,构成非法集资的行为。美国为众筹立法,我们可借鉴美国的JOBS法案对众筹模式进行规范,但还须一个循序渐进的过程。
【编者按:2014年3月31日,最高人民法院、最高人民检察院和公安部联合发布《关于办理非法集资刑事案件适用法律若干问题的意见》亦须关注】
4、虚拟货币法规
2009年6月4日,文化部和商务部联合发布了《关于加强网络游戏虚拟货币管理工作的通知》(文市发〔2009〕20号),该通知规定要严格市场准入,加强对网络游戏虚拟货币发行主体和网络游戏虚拟货币交易服务提供主体的管理。从事“网络游戏虚拟货币交易服务”业务须符合商务主管部门关于电子商务(平台)服务的有关规定。除利用法定货币购买之外,网络游戏运营企业不得采用其它任何方式向用户提供网络游戏虚拟货币。2009年7月20日,文化部发布《“网络游戏虚拟货币发行企业”、 “网络游戏虚拟货币交易企业”申报指南》为开展经营性互联网文化单位申请从事“网络游戏虚拟货币发行服务”业务的申报和审批工作提供可操作性指导规则。
2008年9月28日,国家税务总局《关于个人通过网络买卖虚拟货币取得收入征收个人所得税问题的批复》(国税函〔2008〕818号),明确了虚拟货币的税务处理,即个人通过网络收购玩家的虚拟货币,加价后向他人出售取得的收入,属于个人所得税应税所得,应按照“财产转让所得”项目计算缴纳个人所得税。
总之,一系列监管措施的出台使得虚拟货币的监管得到进一步明确,但是监管措施还仅仅局限于游戏里的虚拟货币。
【编者按:对于时下热炒的比特币,《中国人民银行、工业和信息化部、中国银行业监督管理委员会、中国证券监督管理委员会、中国保险监督管理委员会关于防范比特币风险的通知》(银发〔2013〕289号,明确:现阶段,各金融机构和支付机构不得以比特币为产品或服务定价,不得买卖或作为中央对手买卖比特币,不得承保与比特币相关的保险业务或将比特币纳入保险责任范围,不得直接或间接为客户提供其他与比特币相关的服务,包括:为客户提供比特币登记、交易、清算、结算等服务;接受比特币或以比特币作为支付结算工具;开展比特币与人民币及外币的兑换服务;开展比特币的储存、托管、抵押等业务;发行与比特币相关的金融产品;将比特币作为信托、基金等投资的投资标的等。】
5、互联网银行法规
2001年6月29日,中国人民银行发布《网上银行业务管理暂行办法》,但是2007年被废止。2006年1月26日,中国银监会颁布《电子银行业务管理办法》(银监会令2006年第5号),该办法所称电子银行业务,是指商业银行等银行业金融机构利用面向社会公众开放的通讯通道或开放型公众网络,以及银行为特定自助服务设施或客户建立的专用网络,向客户提供的银行服务。电子银行业务包括利用计算机和互联网开展的银行业务(以下简称网上银行业务),利用电话等声讯设备和电信网络开展的银行业务(以下简称电话银行业务),利用移动电话和无线网络开展的银行业务(以下简称手机银行业务),以及其他利用电子服务设备和网络,由客户通过自助服务方式完成金融交易的银行业务。《电子银行业务管理办法》是互联网银行的重要监管法规。
【编者按:银监会、人民银行:关于加强商业银行与第三方支付机构合作业务管理的通知(银监发〔2014〕10号)对商业银行与第三方支付机构合作业务的提出了具体要求】
6、互联网保险法规
2011年9月20日,中国保监会发布《中国保险监督管理委员会关于印发<</SPAN>保险代理、经纪公司互联网保险业务监管办法(试行)>的通知保监发〔2011〕53号)》,该办法的制定目的是为了促进保险代理、经纪公司互联网保险业务的规范健康有序发展,切实保护投保人、被保险人和受益人的合法权益。2012年5月,中国保险监督管理委员会发布《关于提示互联网保险业务风险的公告》(保监公告[2012]7号),对互联网保险业进行了向广大投保人进行了风险提示。此外,2011年4月15日,保监会发布《互联网保险业务监管规定(征求意见稿)》,互联网保险监管规定也将在不久的将来得到进一步完善。
【编者按:2014年初,保监会草拟了《关于规范人身保险公司经营互联网保险有关问题的通知(征求意见稿)》并公开征求意见,亦值得关注】
(转载于法客帝国,部分内容摘选自湖南青年律师联合会博客)
⑶ 支付宝的源代码是什么
在搜索框输入:2088,会找到一段以2088开头的16位数字,这段数字即为支付宝源代码。
支付宝(中国)网络技术有限公司成立于2004年,是国内的第三方支付平台,致力于为企业和个人提供“简单、安全、快速、便捷”的支付解决方案。
支宽侍付宝公司从2004年建立开始,始终以“信任”作为产品和服务的核心。旗下有“支付宝”与“支付宝钱包”两个独立品牌。自2014年第二季度开始成为当前全球最大的移动支付厂商。
支付宝与国内外180多家银行以及VISA、MasterCard国际组织等机构建立战略合作关系,成为金融机构在电子支付领域最为信任的合作伙伴。
2020年2月,尼泊尔央行向支付宝颁发牌照。 7月,支付宝入选区块链战“疫”优秀方案名单 。10月,支付宝上线 “晚点付”功能。
2013年11月13日,支付宝手机支付用户超1亿,“支付宝钱包”用户数达1亿,支付宝钱包正式宣布成为独立品牌。
2013年11月30日,12306网站支持支付宝购买火车票。
2013年12月31日,支付宝实名认证用户超过3亿。
2013年,支付宝手机支付完成超过27.8亿笔、金额超过9000亿元,成为全球最大的移动支付公司。
来老岩自艾瑞咨询的数据显示,自2013年第一季度以来,支付宝在移动互联网支侍巧御付市场份额从67.6%逐步提升至78.4%,居第一。
⑷ 鏂圭淮p2p缃戣捶绯荤粺婧愮爜
浣滀负缃戣捶閲嶉晣镄勬繁鍦筹纴缁1链埚叏锲界巼鍏堟殏锅滀簰镵旂绣閲戣瀺鏂颁紒涓氭敞鍐屽悗锛3链埚张鐜囧厛鍙锅滈栦粯璐峰拰浼楃硅喘鎴裤傛渶杩戝叧浜庢繁鍦冲叕瀹夐儴闂ㄧ绣璐峰钩鍙扮殑鏂伴椈鍗犳嵁浜嗗悇澶ц储缁忓獟浣撶殑澶存浔锛屽湀鍐呭湀澶栦竴鐗囧彨濂藉0銆
鍏朵腑锛屼粠涓氲呰や负锛岃繖鏄鏀垮簻瀵圭绣璐峰钩鍙扮洃绠¤秼涓ョ殑琛ㄧ幇锛屽逛簬淇冭繘缃戣捶琛屼笟淇℃伅镟村姞鍏寮阃忔槑锛屽敖蹇杩涘叆链夊簭鍙戝𪾢鐘舵佸叿链夐吨瑕佹剰涔夈傛垜浠链熷緟骞舵㈣繋瀹冿绂鎶曡祫钥呰や负锛屽皢P2P绾冲叆鐩戠★纴鍙婃椂镆ュ勬湁闂棰樼殑骞冲彴锛屽皢鍦ㄥ緢澶х▼搴︿笂阆垮厤鎶曡祫钥呭洜骞冲彴杩濊勬搷浣沧垨璺戣矾钥岄伃鍙楀法澶х殑璐浜ф崯澶憋纴锲犳ゅ己鐑堟敮鎸併
鏂瑰穽P2P缃戣捶绯荤粺璁や负锛岄櫎浜嗕笂杩拌傜偣锛屾繁鍦冲竞鍏瀹夐儴闂ㄨ缮浠庡叾缃戣捶骞冲彴閲婃斁鍑哄叾浠栦俊鍙凤细娣卞湷浣滀负缁忔祹鐗瑰尯锛岃兘澶熺巼鍏堣勮寖浜掕仈缃戦噾铻嶏纴绉鏋佹帰绱㈠拰鎺ㄨ繘閲戣瀺鍒跺害鍒涙柊锛屽皢瀵瑰叾浠栧湴鏂瑰舰鎴愯坛濂界殑绀鸿寖鏁埚簲銆傛垜浠鐩镐俊鍏朵粬鐪佸竞寰埚揩涔熶细妯′豢瀛︿範锛岀劧钖庨檰缁瀹炴柦缃戣捶镄勭洃绠℃敛绛栵纴鍒跺畾镊宸辩殑鐩戠$粏鍒欍傝繖绉嶈仈锷ㄥ皢镟村揩镟村ソ鍦版帹锷ㄤ簰镵旂绣閲戣瀺镄勮勮寖鍙戝𪾢銆
鎹鎭夛纴鍦ㄦ繁鍦冲ぇ浼楀彂缁欑忕敯P2P缃戣捶骞冲彴镄勚娄簰镵旂绣鍊熻捶骞冲彴鍏鍙稿熀纭淇℃伅锏昏拌〃銆嬩腑锛岃佹眰锏昏扮殑淇℃伅涓崭粎鍖呮嫭骞冲彴镄勪笟锷′俊鎭銆佽偂涓滀俊鎭銆佷富钀ュご瀵镐俊鎭绛夊熀链淇℃伅锛岃缮鍖呮嫭鐢ㄦ埛鏁伴噺銆佹敹娆鹃噾棰濄佹爣镄勭被鍨嬬瓑涓氩姟淇℃伅锛屼互鍙婃敮浠樿处鍙枫佹湇锷″櫒渚涘簲鍟嗗悕绉扮瓑镓樼¤繍钀ヤ俊鎭锛屾湁锷╀簬鍏瀹夐儴闂ㄥぇ镊翠简瑙e钩鍙拌嚜钀ヨ祫閲戞槸钖﹂殧绂伙纴鏄钖﹁剧珛浜呜祫閲戞睁銆傝繖镙蜂竴镞﹁祫閲戣浆鍏ュ钩鍙帮纴灏卞彲浠ユ彁鍓嶅彂鐜帮纴浠庤屼负鍙婃椂澶勭疆璧㈠缑镞堕棿銆
镓浠ヨ繖娆℃繁鍦冲叕瀹夐儴闂ㄤ富锷ㄤ粙鍏ワ纴镆ユ槑P2P缃戣捶骞冲彴鏄钖︽秹瀚屽瓨鍦ㄨ祫閲戞睁銆备篃鍐嶆¤瘉鏄庝简鏂瑰穽P2P缃戣捶绯荤粺涔嫔墠镟惧彂鏂囧垎鏋愶纴缃戣捶骞冲彴链夊繀瑕佸疄琛岄摱琛屽瓨绠★纴钥屼笖瓒婃棭瓒婂ソ銆傚彧链夎繖镙凤纴镓嶈兘寰埚ソ镄勯槻姝㈠钩鍙扮佽嚜鎸鐢ㄥ㈡埛璧勯噾锛屼粠钥岄伩鍏崭笉浠樻俱佸嵎娆捐窇璺绛夋伓镐т簨浠剁殑鍙戠敓銆
鏂笔2P缃戣捶绯荤粺锛屽浗鍐呴嗗厛镄勮蒋浠跺紑鍙戝晢锛屾嫢链夎繎鍏骞翠簰镵旂绣浜у搧镰斿彂缁忛獙銆傛柟浠モ沧妧链椹卞姩鍟嗕笟鍒涙柊钬濅负瀹楁棬锛岀Н鏋佸垎鏋愯屼笟鍙戝𪾢瓒嫔娍锛屾牴鎹鍒嗘瀽缁撴灉璁捐″崌绾т骇鍝侊纴浠ヨ嚜韬鎶链瀹炲姏鎺ㄥ姩琛屼笟鍒涙柊鍙戝𪾢銆
鐩稿叧闂绛旓细鏂圭淮p2p鍊熻捶3.5锛屽畨瑁呭悗棣栭〉璁块梾涓崭简锛
鐜澧冮梾棰樸傜湅涓涓婸HP閰岖疆鍜岀幆澧冨惂銆傚疄鍦ㄤ笉琛岋纴浣犲氨寮勪釜鐜澧冨寘鍟ョ殑銆
鐩稿叧闂绛旓细5000瀹禤2P缃戣捶链烘瀯宸插叏閮ㄥ仠涓氾紒鍊熺殑阍辫缮钖楋纻閮芥湁鍝浜涘钩鍙帮纻
2022骞3链15镞ワ纴阈朵缭鐩戜细鎸夌収瑕佹眰锛屽叕甯僷2p杩濊勭绣缁滃熻捶骞冲彴蹇呴’鍦ㄤ粖骞村叏閮ㄦ竻阃瀹屻
5000澶氩惰缭瑙勭绣缁滃熻捶骞冲彴鍏甯冨悕鍗曞备笅锛
⑸ 以太坊源码分析--p2p节点发现
节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个 Server ,并将网络拓扑中相邻的节点视为 Node ,而 Table 是 Node 的容器, udp 则是负责维持底层的连接。下面重点描述它们中重要的字段和事件循环处理的关键部分。
PrivateKey - 本节点的私钥,用于与其他节点建立时的握手协商
Protocols - 支持的所有上层协议
StaticNodes - 预设的静态 Peer ,节点启动时会首先去向它们发起连接,建立邻居关系
newTransport - 下层传输层实现,定义握手过程中的数据加密解密方式,默认的传输层实现是用 newRLPX() 创建的 rlpx ,这不是本文的重点
ntab - 典型实现是 Table ,所有 peer 以 Node 的形式存放在 Table
ourHandshake - 与其他节点建立连接时的握手信息,包含本地节点的版本号以及支持的上层协议
addpeer - 连接握手完成后,连接过程通过这个通道通知 Server
Server 的监听循环,启动底层监听socket,当收到连接请求时,Accept后调用 setupConn() 开始连接建立过程
Server的主要事件处理和功能实现循环
Node 唯一表示网络上的一个节点
IP - IP地址
UDP/TCP - 连接使用的UDP/TCP端口号
ID - 以太坊网络中唯一标识一个节点,本质上是一个椭圆曲线公钥(PublicKey),与 Server 的 PrivateKey 对应。一个节点的IP地址不一定是固定的,但ID是唯一的。
sha - 用于节点间的距离计算
Table 主要用来管理与本节点与其他节点的连接的建立更新删除
bucket - 所有 peer 按与本节点的距离远近放在不同的桶(bucket)中,详见之后的 节点维护
refreshReq - 更新 Table 请求通道
Table 的主要事件循环,主要负责控制 refresh 和 revalidate 过程。
refresh.C - 定时(30s)启动Peer刷新过程的定时器
refreshReq - 接收其他线程投递到 Table 的 刷新Peer连接 的通知,当收到该通知时启动更新,详见之后的 更新邻居关系
revalidate.C - 定时重新检查以连接节点的有效性的定时器,详见之后的 探活检测
udp 负责节点间通信的底层消息控制,是 Table 运行的 Kademlia 协议的底层组件
conn - 底层监听端口的连接
addpending - udp 用来接收 pending 的channel。使用场景为:当我们向其他节点发送数据包后(packet)后可能会期待收到它的回复,pending用来记录一次这种还没有到来的回复。举个例子,当我们发送ping包时,总是期待对方回复pong包。这时就可以将构造一个pending结构,其中包含期待接收的pong包的信息以及对应的callback函数,将这个pengding投递到udp的这个channel。 udp 在收到匹配的pong后,执行预设的callback。
gotreply - udp 用来接收其他节点回复的通道,配合上面的addpending,收到回复后,遍历已有的pending链表,看是否有匹配的pending。
Table - 和 Server 中的ntab是同一个 Table
udp 的处理循环,负责控制消息的向上递交和收发控制
udp 的底层接受数据包循环,负责接收其他节点的 packet
以太坊使用 Kademlia 分布式路由存储协议来进行网络拓扑维护,了解该协议建议先阅读 易懂分布式 。更权威的资料可以查看 wiki 。总的来说该协议:
源码中由 Table 结构保存所有 bucket , bucket 结构如下
节点可以在 entries 和 replacements 互相转化,一个 entries 节点如果 Validate 失败,那么它会被原本将一个原本在 replacements 数组的节点替换。
有效性检测就是利用 ping 消息进行探活操作。 Table.loop() 启动了一个定时器(0~10s),定期随机选择一个bucket,向其 entries 中末尾的节点发送 ping 消息,如果对方回应了 pong ,则探活成功。
Table.loop() 会定期(定时器超时)或不定期(收到refreshReq)地进行更新邻居关系(发现新邻居),两者都调用 doRefresh() 方法,该方法对在网络上查找离自身和三个随机节点最近的若干个节点。
Table 的 lookup() 方法用来实现节点查找目标节点,它的实现就是 Kademlia 协议,通过节点间的接力,一步一步接近目标。
当一个节点启动后,它会首先向配置的静态节点发起连接,发起连接的过程称为 Dial ,源码中通过创建 dialTask 跟踪这个过程
dialTask表示一次向其他节点主动发起连接的任务
在 Server 启动时,会调用 newDialState() 根据预配置的 StaticNodes 初始化一批 dialTask , 并在 Server.run() 方法中,启动这些这些任务。
Dial 过程需要知道目标节点( dest )的IP地址,如果不知道的话,就要先使用 recolve() 解析出目标的IP地址,怎么解析?就是先要用借助 Kademlia 协议在网络中查找目标节点。
当得到目标节点的IP后,下一步便是建立连接,这是通过 dialTask.dial() 建立连接
连接建立的握手过程分为两个阶段,在在 SetupConn() 中实现
第一阶段为 ECDH密钥建立 :
第二阶段为协议握手,互相交换支持的上层协议
如果两次握手都通过,dialTask将向 Server 的 addpeer 通道发送 peer 的信息
⑹ scrm绯荤粺婧愮爜链夊摢浜涙瘆杈冨煎缑璐涔扮殑锛
ECCRM鍊煎缑璐涔般镣瑰嚮浜呜В浜у搧scrm绯荤粺婧愮爜阃夋嫨镄勬爣鍑嗭细
1銆佹簮镰佸畨鍏锛岃川閲忛珮
闅忕潃浜掕仈缃戠殑涓嶆柇娴侀氾纴链夊緢澶歴crm绯荤粺婧愮爜鍦ㄧ绣涓婃祦阃氾纴骞惰涓嶅皯浜轰慨鏀瑰拰浣跨敤锛屾墍浠ュ艰嚧杩欎簺scrm绯荤粺婧愮爜镄勮川閲忓拰瀹夊叏镐ч兘闱炲父宸銆
浼佷笟瑕佹兂寰楀埌镟村ソ镄剆crm绯荤粺鎼寤烘晥鏋滐纴杩樻槸寤鸿铡婚夋嫨姝h勚佸彲闱犵殑scrm绯荤粺婧愮爜锛岃繖镙峰畨鍏ㄦу拰scrm绯荤粺瀹氩埗璐ㄩ噺閮芥洿锷犳湁淇濋㱩銆
2銆佹湇锷″晢链嶅姟𨱍呭喌
链嶅姟鍟呜兘澶熸彁渚涗笓涓氭湇锷★纴杩欐槸闱炲父閲嶈佺殑涓镣逛紭锷裤傚洜涓哄緢澶氢紒涓氲嚜宸卞苟涓嶆哕鎶链锛屽熀链涓婇兘鏄闱犳湇锷″晢鎻愪緵镄勬妧链鍜岃繍钀ユ敮鎸佹潵鎼寤簊crm绯荤粺镄勚
镓浠ヤ紒涓氩湪阃夋嫨scrm绯荤粺婧愮爜镄勬椂鍊欙纴涓瀹氲侀夋嫨鍝嶅簲鍙婃椂锛屽苟鐩鍙浠ユ彁渚涗笓涓氱殑鎶链杩愯惀鏂规堢殑寮鍙戝晢锛岃繖浼氩ぇ澶ц妭鐪佷紒涓氱殑镞堕棿鎴愭湰銆
链夐梾棰樻㈣繋鍜ㄨ銆侲C鏄涓娆惧紑绠卞嵆鐢ㄧ殑鍏ㄥ満鏅疌RM绯荤粺锛屽埄鐢ㄧぞ浜ゅ寲銆佹櫤鑳藉寲鎶链甯浼佷笟镓挞氲幏瀹-鎴愪氦-澶嶈喘鍏ㄦ祦绋嬶纴璁╁竞鍦恒侀攒鍞銆佸㈡湇绛夐儴闂ㄦ棤缂濊繛鎺ワ纴瀹炵幇浠ュ㈡埛涓轰腑蹇幂殑涓浣揿寲鍗忓悓锛屽叏闱㈡彁鍗囬攒鍞涓氱哗銆傜洰鍓嶏纴EC宸插湪鏁栾偛銆侀噾铻嶃佷紒链嶃佺戞妧銆佺编涓氥侀浂鍞绛夎屼笟链嶅姟浜呜秴杩3涓囧跺㈡埛锛屾疮澶╂湁锏句竾绾ч攒鍞姝e湪浣跨敤ECCRM锛屼负浼佷笟澧炲姞鍗冧竾𨱒″晢链猴纴链夋暟锏句竾绗斾氦鏄挞氲繃EC浜х敓銆