Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Çø¿éÁ´¿ªÔ´ÊµÏÖhyperledger fabric¼Ü¹¹Ïê½â
 
  4867  次浏览      27
 2018-5-31 
 

 

±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcsdn£¬½éÉÜÁËÇø¿éÁ´½â¾ö·½°¸µÄÌØÐÔ£¬fabricºËÐĸÅÄfabric½»Ò×Ìá½»Á÷³ÌµÈ֪ʶ¡£

1¡¢Çø¿éÁ´½â¾ö·½°¸µÄÌØÐÔ

1.1 ·Ö²¼Ê½Õʱ¾

Çø¿éÁ´ºËÐĸÅÄîÊÇ·Ö²¼Ê½Õʱ¾£¬¾ÍÏñÏÂÃæµÄͼ1Ëùʾ£¬Í¬ÑùµÄÕʱ¾£¨È«Á¿µÄ½»Ò×Êý¾Ý£¬Ïê¼ûϽڣ©ÔÚÈÎÒâһ̨½Úµã£¨²»°üÀ¨¿Í»§¶Ë£©É϶¼ÓС£ËùÒÔ£¬ÆäÓŵãÊÇÊý¾ÝºÜÄÑÔì¼Ù£¬Ôì¼ÙºóÒ²¿ÉÒÔͨ¹ý×·ËݼǼÀ´×·¾¿·¨ÂÉÔðÈΡ£¶øÈ±µã¾ÍÊǼ«´óµÄÀË·Ñ£¬´«Í³·þÎñÿ·ÝÊý¾Ý¶¼¾¡Á¿Éٴ漸·Ý£¬¼´Ê¹´æÁËÈý·Ý¿½±´¶¼ÒѾ­¿¼Âǵ½Öî¶àÒì³££¬²¢Ê¹·þÎñ¿ÉÓÃÐÔ´ïµ½N¸ö9ÁË¡£¶øÇø¿éÁ´ÕâÖÖÌØÐÔ£¬Í¬Ê±Ôì³ÉµÄÁíÒ»¸öÎÊÌâÊÇÕʱ¾²»ÄÜÌ«´ó£¬ÖÁÉÙ²»Äܳ¬¹ýÇø¿éÁ´ÍøÂçÖÐ×îС½áµãµÄ´æ´¢ÒÔ¼°´¦ÀíÄÜÁ¦¡£ËùÒÔ£¬ÕâÖÆÔ¼ÁË×ܽ»Ò×Êý¾Ý£¨ÏÂÎÄΪ·½±ã¸ÅÄî½éÉÜ£¬Í³³ÆÎªÕʱ¾ledger£©µÄÌõÊý£¬½ø¶øÒ²Ó°ÏìÁËÄÜдÈëÇø¿éÁ´µÄµ¥Ìõ½»Ò×Êý¾ÝµÄ´óС¡£

ͼ1 Çø¿éÁ´·Ö²¼Ê½Õʱ¾Ê¾Òâͼ

ʲôÊÇÇø¿éÁ´ÄØ£¿ÎÒºÜϲ»¶¡¶Çø¿éÁ´¼¼Êõ½ø½×Óëʵս¡·Ò»ÊéÖжÔËüµÄ¶¨Òå£ºÇø¿éÁ´ÊÇÒ»ÖÖ°´ÕÕʱ¼ä˳Ðò½«Êý¾ÝÇø¿éÒÔ˳ÐòÏàÁ¬µÄ·½Ê½×éºÏ³ÉµÄÒ»ÖÖÁ´Ê½Êý¾Ý½á¹¹¡£Èç¹û¾õµÃÓеã³éÏó£¬ÄÇôÎÒÃÇÔÙÀ´¿´¿´ÏÂÃæµÄͼ2¡£

ͼ2-Çø¿éÁ´Êý¾Ý½á¹¹Ê¾Òâ

ͼ2ÖоÍÊÇÕ˱¾£¬ËüÓɶà¸öÇø¿é¹¹³ÉÁËÒ»¸öÓÐʱÐòµÄÁ´±í£¬¶øÃ¿¸öÇø¿éÀﺬÓжàÌõ½»Ò×trasaction£¨ËõдΪtx£©¹¹³ÉµÄÁ´±í¡£Í¼2Ï·½ÓÐÒ»¸öWorldStateÊÀ½ç״̬£¬ÕâÆäʵÊÇΪÁËÌáÉýÐÔÄÜÓõġ£±ÈÈ磬key1¹²½»Ò×ÁË10000´Î£¬ÎªÁË»ñÈ¡ËüµÄµ±Ç°×´Ì¬Öµ£¬ÐèÒªÕýÏòÖ´ÐÐÕâ10000´Î½»Ò×£¬Õâ¾ÍµÃ²»³¥Ê§ÁË¡£Èç¹ûÕâ1Íò´Î½»Ò×Àÿ´Îн»Ò×Ö´ÐÐÍ꣬¶¼Í¬²½¸üÐÂÒ»¸öÊý¾Ý¿â£¨ÔÚfabricÀïÓõÄÊÇlevelDB£©£¬ÕâÑù²éѯµ±Ç°×´Ì¬Ê±£¬Ö»ÐèÒª²éѯ¸ÃÊý¾Ý¿â¼´¿É£¬Èçͼ3Ëùʾ¡£

ͼ3-fabric levelDB״̬Êý¾Ý¿â

ͼ3ÖУ¬Çø¿éÁ´Õʱ¾ÊÇÔÚFileSystemÎļþϵͳÖб£´æµÄ£¬¶øLevel DB´æ·ÅÊÀ½ç״̬¡£

1.2 ÖÇÄܺÏÔ¼smart contract

Çø¿éÁ´µÄ·¢Õ¹¹ý³ÌÖУ¬Ò»°ã1.0ʱ´ú¾ÍÊÇÊý×Ö»õ±Òʱ´ú£¬´ú±íÊDZÈÌØ±Ò£¬¶ø2.0ʱ´ú¾ÍÊÇÖÇÄܺÏÔ¼£¨ÏÖÔÚÊÇ3.0ʱ´ú£¬¸÷ÖÖÁªÃËÁ´¼´Îª´ú±í£©¡£

ÖÇÄܺÏÔ¼ÊÇÔËÐÐÔÚÇø¿éÁ´ÉϵÄÄ£¿é»¯¡¢¿ÉÖØÓõÄ×Ô¶¯Ö´Ðнű¾£¬ÓÐÁËËüÎÒÃǾͿÉÒÔÍê³É¸´ÔÓµÄÒµÎñÂß¼­£¬ÀýÈçͬһ¸öÇø¿éÁ´ÉÏÓжà·ÝºÏÔ¼£¬¶øÃ¿·ÝºÏÔ¼¿ÉÒÔÔ¼¶¨²»Í¬µÄ²ÎÓëÕߣ¨ÆóÒµ»òÕßÏà¹Ø·½£©¡£Ò²¿ÉÒÔÖ¸¶¨Ã¿·ÝºÏÔ¼Àïÿ¸ö×ÓÃüÁî×öÒ»ÅúÌØ¶¨µÄÊ£¬´ó¼Ò¿ÉÒÔ°ÑËüÏëÏó³É¹ØÏµÊý¾Ý¿âÀïµÄÊÂÎñ¡£Èçͼ4Ëùʾ£¬ÎÒÃÇ¿ÉÒÔÔÚºÏÔ¼ÀïÖ¸¶¨ÔÊÐíÄÄЩÆóÒµµÄ½Úµã¿ÉÒÔ²ÎÓëµ½½»Ò×Á÷³ÌÖÐÀ´£¨ÔÚfabricÀïÕâ½Ð¹²Ê¶²ßÂÔ£©¡£

ͼ4-ÖÇÄܺÏԼͼʾ

ÔÚfabricÖУ¬ÖÇÄܺÏÔ¼½Ð×öchaincode£¬ËüÓÐ6¸ö״̬£¬ÈçÏÂËùʾ£º

Install ¡ú Instantiate ¡ú invocable ¡ú Upgrade ¡ú Deinstantiate ¡ú Uninstall.

ʵ¼ÊÉÏÖÇÄܺÏÔ¼¾ÍÊÇÒ»¶Î´úÂ룬fabric¹Ù·½ÈϿɵÄÊÇGOÓïÑÔ¡£Ê×ÏÈÎÒÃÇÐèÒª°ÑºÏÔ¼´úÂëÉÏ´«µ½Çø¿éÁ´ÉÏ£¬ÕâÒ»²½µÄ״̬¾Í½ÐInstall¡£

½Ó×Å£¬ÐèÒª×ö³õʼ»¯²Ù×÷¡£±ÈÈ磬ÏÖÔÚµÄÊý¾ÝÊÇ´æ·ÅÔÚmysqlÖеģ¬ÄÇôÉÏÏßʱÐèÒªÓÃInstantiate°ÑÊý¾ÝÇ¨ÒÆÖÁÁ´ÉÏ£¬ÕâÒ²Ëã³õʼ»¯¡£³õʼ»¯ºó£¬chaincode¾Í½øÈëinvocable¿Éµ÷ÓÃ״̬ÁË¡£

ͨÓÃÎÒÃÇ¿ÉÒÔͨ¹ýCLIÃüÁîÐлòÕß³ÌÐòÀïÓÃSDKµ÷ÓúÏÔ¼£¨v1.1ǰ»¹ÓÐRestApiµ÷Óã¬ÏÖÒÑ·ÅÆú£©¡£

ÁªÃËÁ´ÓÉÓÚ¿ç¶à¼ÒÆóÒµ¡¢¶à¸öµØÇøÉõÖÁ¹ú¼Ò£¬ºÜÄÑʹµÃºÏÔ¼±£³ÖÒ»Öµİ汾£¬Òò´Ë£¬Ã¿¸öºÏÔ¼¶¼Óа汾ºÅ¡£¶ø°æ±¾Éý¼¶Ê±£¬¾ÍÊÇUpgrade״̬¡£

×îºóÁ½¸ö״̬¶ÔӦןÏÔ¼ÏÂÁ´¡£

ÖÇÄܺÏÔ¼¿ÉÒÔÔÚ¹©Ó¦Á´µÈ½Ï¸´ÔÓµÄÒµÎñ³¡¾°ÏÂÆðµ½ºÜ´óµÄ×÷Óã¬ÈçÏÂÃæµÄͼ5Ëùʾ£º

ͼ5-ÖÇÄܺÏÔ¼¼¼ÊõµÄÓ¦ÓÃʾÒâ

1.3 Êý¾ÝÒ»ÖÂÐÔ£¨¹²Ê¶Ëã·¨£©

¼ÈÈ»Çø¿éÁ´ÊÇÒ»¸öÈ¥ÖÐÐÄ»¯µÄ·Ö²¼Ê½ÏµÍ³£¬ÄÇô×ÔȻֻÄÜͨ¹ýͶƱÀ´¾ö¶¨Ò»ÖÂÐÔÁË£ºÉÙÊý·þ´Ó¶àÊý¡£µ±È»£¬¶àÉÙËã¶àÊýÄØ£¿²»Í¬µÄ¹²Ê¶Ë㷨ϣ¬½á¹û²¢²»Ïàͬ¡£±ÈÈçpaxosËã·¨£¨²Î¼û±ÊÕߵġ¶paxosËã·¨ÈçºÎÈÝ´íµÄ¨C½²ÊöÎ廢½«µÄʵ¼ù¡·£©¾ÍÊdz¬¹ýÒ»°ë£¬¶øPBFTÔòÐèÒªÈý·ÖÖ®¶þÒÔÉÏ¡£

ÕâÀïÓÐÒ»¸ö°Ýռͥ½«¾üÎÊÌâÐèҪעÒ⣬ÈçºÎÀí½â¸ÃÎÊÌâ¿ÉÒԲμûÕâ·Ý·­Òë¹ýµÄThe_Part-Time_Parliament(PaxosËã·¨ÖÐÎÄ·­Òë)Îĵµ¡£¼òÑÔÖ®£¬¾ÍÊÇͶƱµÄ°Ýռͥ½«¾ü£¨·þÎñÆ÷£©ÃÇÓÐ2ÖÖ²»¿É¿¿µÄÐÎʽ¡£µÚÒ»Êdzٶۣ¨Êý¾Ý°üÑÓ³Ù£©¡¢Ê§Ò䣨Êý¾Ý°ü¶ªÊ§ÒÔ¼°Êý¾Ý°üÖØ·¢£©¡¢Ê§×Ù£¨·þÎñÆ÷å´»ú£©µÈ²»º¬±³ÅѵÄÐÐΪ£¬µÚ¶þÔòÊÇÓн«¾üÊǼäµý£¨·þÎñÆ÷±»¹¥ÆÆ£©¡£ÈçpaxosÕâÑùµÄËã·¨ÊôÓÚµÚÒ»ÖÖ£¬Fault-tolerance£¬Ëü²»ÄÜÈÝÈÌ·þÎñÆ÷ÉÏÓжñÒâ´úÂ룻¶øÈçPBFT(Practical Byzantine Fault Tolerance)ÕâÑùµÄËã·¨ÊǵڶþÀ࣬Byzantine-Fault-tolerance£¬ËüÄܹ»ÈÝÈÌÒ»¶¨ÊýÁ¿µÄ°Ýռͥ½«¾ü½Úµã´æÔÚ£¬ÈçPBFT¡¢SBFT¡¢RBFTËã·¨µÈ¡£

µÚ¶þÀàByzantine-Fault-tolerance¹²Ê¶Ëã·¨ËäÈ»¿´ÉÏÈ¥ºÜÃÀ£¬µ«²¢²»³ÉÊì£¬ÌØ±ðÊÇÐÔÄܵÍÏ£¬±ÈÈçPBFTÊÇÒ»¸ö¶àÏîʽ¸´ÔӶȵÄËã·¨O(N^2)£¬½Úµã¹ý¶àʱ£¨´óÓÚ100£©ÐÔÄܼ±ÖèϽµ¡£µÚÒ»Ààͨ³£ÊÇO(N)¸´ÔÓ¶È£¬ÔÚijЩ³¡¾°ÏÂʹÓÃЧ¹û»¹²»´í£¬±ÈÈçfabric v1.1µÄkafka¹²Ê¶»úÖÆ¾ÍÊÇÕâÑùµÄËã·¨£¬ÏÂÎÄÎÒÃÇ»áÏêÊö¡£

Ïñ±ÈÌØ±Ò¡¢ÒÔÌ«·»µÈ²ÉÓõĹ²Ê¶Ëã·¨ÓÖÓÐËù²»Í¬£¬ÀýÈç±ÈÌØ±ÒµÄPOW¹¤×÷Á¿Ö¤Ã÷Ëã·¨£¬Ëü¶¨ÒåһСʱÄÚ£¨Í¨¹ýµ÷ÕûÔËËãÄѶÈʵÏÖ£¬±ÈÈçµ÷Õû½üËÆ³Ì¶È£©ÓÐÒ»¸ölucky node½Úµã£¬¸Ã½ÚµãÊÇͨ¹ýÖ¤Ã÷×ÔÉíµÄŬÁ¦£¨hashֵĿ½â£©¶øÐÒÔËÑ¡³ö£¬Ñ¡³öºóËü¾Í¿ÉÒÔΪÕâ¶Îʱ¼äµÄ½»Ò××ö¾ö¶¨£¨ËƺõͦÏñ×Üͳѡ¾Ù^_^£©¡£ÏêÇé²Î¼ûÎÒÕâÆªÎÄÕ£º¡¶Çø¿éÁ´¼¼Êõѧϰ±Ê¼Ç¡·

1.4 ·Ç¶Ô³Æ¼ÓÃÜ

Çø¿éÁ´Í¨¹ý·Ç¶Ô³Æ¼ÓÃܼ¼ÊõʵÏÖÉí·ÝÑéÖ¤ÓëÊý¾Ý¼ÓÃÜ¡£Æäʵ¾ÍÊÇÎÒÃÇÈÕ³£ÔÚÓõÄSSL¼¼Êõ¡£

ΪÁË·½±ãÀí½â£¬ÎÒÃÇÐèÒªÏȽéÉÜPKI(Public Key Infrastructure)£¬ËüÊÇÒ»ÖÖ×ñÑ­±ê×¼µÄÀûÓù«Ô¿¼ÓÃܼ¼ÊõΪµç×ÓÉÌÎñµÄ¿ªÕ¹ÌṩһÌ×°²È«»ù´¡Æ½Ì¨µÄ¼¼ÊõºÍ¹æ·¶¡£ÓÐÒ»¸öCA£¨Certificate Authority£©È¨Íþ»ú¹¹¸ºÔðÏòÓû§£¨°üÀ¨·þÎñÌṩÕßÓëʹÓÃÕߣ©ÌṩÊý×ÖÖ¤Ê飬°üÀ¨¹«Ô¿Óë˽Կ£¬Í¬Ê±CA»ú¹¹»¹ÐèÒªÌṩһ¸öCRL£¨Certificate Revocation List£©Ö¤ÊéµõÏúÁÐ±í£¬ÈçÏÂÃæµÄͼ6Ëùʾ¡£

ͼ6-CA»ú¹¹°ä·¢Êý×ÖÖ¤ÊéÒÔ¼°ÌṩCAL

ÕâÑù£¬Çø¿éÁ´¿ÉÒÔͨ¹ýPKIÌåϵʵÏÖ°²È«ÈÏÖ¤¡£PKIÓÐÈý¸ö¹Ø¼üµã£¬ÎÒÃÇÏÂÃæÏêÊö¡£

1.4.1 Êý×ÖÖ¤Êé Digital Certificate

±ÈÈçMary Morris·ûºÏX.509¹æ·¶µÄÊý×ÖÖ¤ÊéÀÆäSubjectÊôÐÔÀï¾Íº¬ÓÐËýµÄÐÅÏ¢£¬°üÀ¨¹ú¼ÒC=US¡¢ËùÊôµÄÖÝ»òÕßÊ¡·ÝST=Michigan¡¢ËùÔÚ³ÇÊÐL=Detroit¡¢ËùÊôµ¥Î»O=Mitchesll Cars¡¢ÆäËûÐÅÏ¢OU=Manufacturing¡¢¹«ÓÃÐÅÏ¢CN=Mary Morris/UID=123456µÈ£¬Ò²º¬ÓÐÆäËûÐÅÏ¢£¬ÈçÏÂÃæµÄͼ7Ëùʾ¡£

ͼ7-PKIÊý×ÖÖ¤Êé

1.4.2 ¹«Ô¿Óë˽Կ

CA°ä·¢ÁËÁ½¸öÖ¤Ê飺¹«Ô¿Óë˽Կ£¬ÆäÖУ¬Ë½Ô¿½ö·þÎñÌṩÕß±£´æ£¬¶ø¹«Ô¿Ôò¿É±»ËùÓÐÈË£¨·þÎñʹÓÃÕߣ©±£´æ¡£

Ëùν·Ç¶Ô³Æ¼ÓÃÜ£¬¾ÍÊǹ«Ô¿¼ÓÃܵÄÏûÏ¢½ö˽Կ¿ÉÒÔ½âÃÜ£»Í¬Àí£¬Ë½Ô¿¼ÓÃܵÄÏûÏ¢£¬½ö¹«Ô¿¿ÉÒÔ½âÃÜ¡£¶ÔÓ¦ÓÚǰÕߣ¬¿ÉÒÔʵÏÖ¿Í»§¶Ë·ÃÎÊ·þÎñÆ÷ʱ¼ÓÃÜÏûÏ¢£¬ÀýÈç·ÃÎʰ²È«¼¶±ð¸ßµÄÒ³ÃæÊ±Ìá½»µÄ±íµ¥ÐÅÏ¢¶¼ÐèÒªÓù«Ô¿¼ÓÃÜ£¬È·±£Ö»ÓзþÎñÆ÷²ÅÄܽâÃÜÍøÂ籨ÎÄ¡£¶ÔÓ¦ÓÚºóÕߣ¬Ôò¿ÉʵÏÖÇ©Ãû¹¦ÄÜ£¬ÈçÏÂÃæµÄͼ8Ëùʾ¡£

ͼ8-PKIÖÐ˽ԿǩÃûºóÓù«Ô¿ÑéÇ©Ãû

ͼ8ÖÐMary MorrisÓÃ˽Կ¶ÔÒ»¶ÎÐÅÏ¢µÄÄÚÈÝ£¨ÈôÄÚÈݹý´óÔò¿ÉÏÈHASHºó»ñµÃСµãµÄ×Ö·û´®£©¼ÓÃܺó£¬Éú³ÉÇ©Ãû¸½¼ÓÔÚÏûÏ¢ÖС£½ÓÊÕÕ߿ɴÓCA»ú¹¹»ñÈ¡µ½¹«Ô¿£¬Óù«Ô¿½âÃÜÇ©Ãûºó£¬ÔÙÓëÄÚÈݱȶԣ¬ÒÔÈ·¶¨ÏûÏ¢ÊÇ·ñÀ´×ÔMaryMorris¼°ÄÚÈÝÊÇ·ñ±»´Û¸Ä¡£¶ÔÓÚÎļþÀ´ËµÒ²ÊÇÒ»Ñù£¬Ð¡ÎļþÖ±½Ó¼ÓÃÜ£¬´óÎļþÏÈÉú³ÉhashÔÙ¶Ôhash¼ÓÃÜ£¬ÈçÏÂÃæµÄͼ9Ëùʾ¡£

ͼ9-¶ÔÎļþµÄÇ©Ãû

1.4.3 Ö¤ÊéÐÅÈÎÁ´

CAÖ¤Êé·ÖΪÁ½ÀࣺRCA(Root CA)¸ùÖ¤ÊéÒÔ¼°ICA£¨Intermediate CA£©ÖмäÖ¤Êé¡£ÕâЩ֤ÊéÓÉRCA¿ªÊ¼¹¹³ÉÒ»¸öÖ¤ÊéÐÅÈÎÁ´£¬ÈçÏÂÃæµÄͼ10Ëùʾ¡£

ͼ10-CAÖ¤ÊéÐÅÈÎÁ´Ìõ

ÓÐÐí¶àCAÖ¤ÊéȨÍþ»ú¹¹£¬¸÷×ÔÓÐÆäRCA¡£Èç¹ûRCAµÃ²»µ½ÐÅÈΣ¬ÄÇôÆäϵÄICAÒ²ÎÞ·¨ÈÏ֤ͨ¹ý¡£

µ±È»£¬×Ô¼ºµÄ·þÎñÆ÷Ò²¿ÉÒÔÉú³ÉRCA¡£

ÔÚFabricÀÔÊÐí²»Í¬µÄÆóҵʹÓò»Í¬µÄRCA£¬Ò²¿ÉÒÔʹÓÃÏàͬµÄRCAºÍ²»Í¬µÄICA¡£ÕâÓëÏÂÎÄÖеÄMSPÃÜÇÐÏà¹Ø¡£

1.5 С½á

ÎÒÃÇÀ´×ܽáÏÂÇø¿éÁ´£¬ËüÖ÷ÒªÊÇΪÁ˽â¾öÉç»áÉϵÄÐÅÈÎÎÊÌâ¶ø´æÔڵģ¬Îª´Ë£¬Ëü¸¶³öÁ˳ÁÖØµÄÐÔÄÜ¡¢¿ÉÓÃÐÔ´ú¼Û¡£ËüÔõô×öµ½µÄÄØ£¿Í¨¹ý4µãʵÏÖ£º1¡¢Êý¾Ýµ½´¦´æ·Å£»2¡¢²Ù×÷¼Ç¼²»¿É¸ü¸Ä£»3¡¢´«ÊäÊý¾Ý¿ÉÐÅ£»4¡¢ÒµÎñ½Å±¾Ô¼Êø¡£

ÄÇô£¬Õâ¸öÐÅÈÎÎÊÌâµÄ½â¾ö£¬´øÀ´ÁË2¸ö·Ç¹¦ÄÜÐÔµÄÔ¼Êø£ºÊý¾ÝÒ»ÖÂÐԺͿÉÓÃÐÔ¡£ÆäÖпÉÓÃÐÔ°üÀ¨Á½µã£º1¡¢½»Ò×ÔڿɽÓÊܵÄʱ¼äÄÚ´ï³É¡£±ÈÈç±ÈÌØ±ÒµÄ·Ö²æ¾Í»áÔì³ÉÑÏÖØÎÊÌâ¡£2¡¢ÍÌÍÂÁ¿´ï±ê¡£¶ø±ÈÌØ±ÒÿÃëÖ»ÄÜÓÐ7´Î½»Ò×£¬ÕâÏÔȻ̫µÍÁË¡£

2¡¢fabricºËÐĸÅÄî

hyperledger fabric·ûºÏÉÏÃæËµ¹ýµÄÇø¿éÁ´µÄËùÓÐÌØÐÔ¡£ÎÒÃDZØÐëÏÈÁ˽âËüµÄһЩ¸ÅÄ²ÅÄܽøÒ»²½Àí½âÆä¼Ü¹¹Éè¼Æ¡£ÓÉÓÚÓ¢ÎÄ×ÊÁϾӶ࣬ËùÒÔÕâЩ¸ÅÄîÎÒ¶¼ÒÔÓ¢ÎÄÃèÊöΪ׼£º

chaincode£ºÖÇÄܺÏÔ¼£¬ÉÏÎÄÒÑÌáµ½¡£Ã¿¸öchaincode¿ÉÌṩ¶à¸ö²»Í¬µÄµ÷ÓÃÃüÁî¡£

transaction£º½»Ò×£¬Ã¿ÌõÖ¸Áî¶¼ÊÇÒ»´Î½»Òס£

world state£º¶Ôͬһ¸ökeyµÄ¶à´Î½»Ò×ÐγɵÄ×îÖÕvalue£¬¾ÍÊÇÊÀ½ç״̬¡£

endorse£º±³Êé¡£½ðÈÚÉϵÄÒâÒåΪ£ºÖ¸³ÖƱÈËΪ½«Æ±¾ÝȨÀûתÈøøËûÈË»òÕß½«Ò»¶¨µÄƱ¾ÝȨÀûÊÚÓèËûÈËÐÐʹ£¬¶øÔÚÆ±¾Ý±³Ãæ»òÕßÕ³µ¥ÉϼÇÔØÓйØÊÂÏǩÕµÄÐÐΪ¡£Í¨³£ÎÒÃÇÒýÉêΪ¶Ôij¸öÊÂÇ鸺Ôð¡£ÔÚÎÒÃǵĹ²Ê¶»úÖÆµÄͶƱ»·½ÚÀ±³ÊéÒâζ×ŲÎÓëͶƱ¡£

endorsement policy£º±³Êé²ßÂÔ¡£ÓÉÖÇÄܺÏÔ¼chaincodeÑ¡ÔñÄÄЩpeer½Úµã²ÎÓëµ½±³Êé»·½ÚÀ´¡£

peer£º´æ·ÅÇø¿éÁ´Êý¾ÝµÄ½áµã£¬Í¬Ê±»¹ÓÐendorseºÍcommit¹¦ÄÜ¡£

channel£ºË½ÓеÄ×ÓÍøÂ磬ÊÂʵÉÏÊÇΪÁ˸ôÀ벻ͬµÄÓ¦Óã¬Ò»¸öchannel¿Éº¬ÓÐÒ»Åúchaincode¡£

PKI£ºPublic Key Infrastructure£¬Ò»ÖÖ×ñÑ­±ê×¼µÄÀûÓù«Ô¿¼ÓÃܼ¼ÊõΪµç×ÓÉÌÎñµÄ¿ªÕ¹ÌṩһÌ×°²È«»ù´¡Æ½Ì¨µÄ¼¼ÊõºÍ¹æ·¶¡£

MSP£ºMembership Service Provider£¬ÁªÃËÁ´³ÉÔ±µÄÖ¤Êé¹ÜÀí£¬Ëü¶¨ÒåÁËÄÄЩRCAÒÔ¼°ICAÔÚÁ´ÀïÊÇ¿ÉÐÅÈε쬰üÀ¨¶¨ÒåÁËchannelÉϵĺÏ×÷Õß¡£

org£ºorginazation£¬¹ÜÀíһϵÁкÏ×÷ÆóÒµµÄ×éÖ¯¡£

2.1 ¿ª·¢¸ÅÄî

fabricÁªÃËÁ´µÄ¿ª·¢ÈËÔ±Ö÷Òª·ÖΪÈýÀࣺµ×²ãÊÇϵͳÔËά£¬¸ºÔðϵͳµÄ²¿ÊðÓëά»¤£»Æä´ÎÊÇ×éÖ¯¹ÜÀíÈËÔ±£¬¸ºÔðÖ¤Êé¡¢MSPȨÏÞ¹ÜÀí¡¢¹²Ê¶»úÖÆµÈ£»×îºóÊÇÒµÎñ¿ª·¢ÈËÔ±£¬ËûÃǸºÔð±àдchaincode¡¢´´½¨Î¬»¤channel¡¢Ö´ÐÐtransaction½»Ò׵ȣ¬ÈçÏÂÃæµÄͼ11Ëùʾ¡£

ͼ11-fabric¼¼ÊõÈËÔ±µÄ·Ö²ã

fabric´óÖ·ÖΪµ×²ãµÄÍøÂç²ã¡¢È¨ÏÞ¹ÜÀíÄ£¿é¡¢Çø¿éÁ´Ó¦ÓÃÄ£¿é£¬Í¨¹ýSDKºÍCLI¶ÔÓ¦Óÿª·¢ÕßÌṩ·þÎñ£¬ÈçÏÂÃæµÄͼ12Ëùʾ¡£

ͼ12-fabric¿ª·¢Ä£¿éͼ

ÎÒÃǵĿª·¢Á÷³ÌÖ÷Òª°üÀ¨Ð´ÖÇÄܺÏÔ¼£¬ÒÔ¼°Í¨¹ýSDKµ÷ÓÃÖÇÄܺÏÔ¼£¬¼°¶©Ôĸ÷Ààʼþ£¬Èçͼ13Ëùʾ¡£

ͼ13-¿ª·¢»·½Ú

2.2 MSP

ÿ¸ö¹ÜÀíЭ×÷ÆóÒµµÄORG×éÖ¯¶¼¿ÉÒÔÓµÓÐ×Ô¼ºµÄMSP¡£ÈçÏÂͼ14Ëùʾ£¬×éÖ¯ORG1ÓµÓеÄMSP½ÐORG1.MSP£¬¶ø×éÖ¯ORG2ÒµÎñ¸´ÔÓ£¬ËùÒÔά»¤ÁË3¸öMSP¡£

ͼ14-ORG¿É¹ÜÀí×Ô¼ºµÄMSP

MSP³öÏÖÔÚÁ½¸öµØ·½£ºÔÚchannelÉÏÓÐÒ»¸öÈ«¾ÖµÄMSP£¬¶øÃ¿¸öpeer¡¢orderer¡¢clientµÈ½ÇÉ«É϶¼Î¬»¤Óб¾µØµÄ¾Ö²¿MSP£¬Èçͼ15Ëùʾ¡£

ͼ15-ÔÚchannelÉϵÄGlobal MSPÒÔ¼°ÔÚ²ÎÓë½ÇÉ«ÉϵÄLocal MSP

±¾µØMSPÖ»±£´æÓÐGlobal MSPÉϵÄ×Ó¼¯£¬ÄÚÈݱ£´æÔÚ±¾µØÎļþϵͳÉÏ£¬¶øÈ«¾ÖMSP¿ÉÔÚÂß¼­ÉÏÈÏΪÊÇÅäÖÃÔÚϵͳÉϵģ¬Ëüʵ¼ÊÒ²ÔÚÿ¸ö²ÎÓëÕßÉϱ£´æÒ»·Ý¿½±´£¬µ«»áά³ÖÒ»ÖÂÐÔ¡£

MSPÒ²·Ö¼¶£¬Èçͼ16ÖÐËùʾ£¬µ×²ãµÄnetwork MSP¸ºÔðÍøÂç²ãµÄ×¼È룬ÆäMSPÓÉORG1ÓµÓУ¬¶øÉÏÃæµÄij¸öchannelµÄMSPÔòÓÉORG1ºÍORG2¹²Í¬¹ÜÀí¡£

ͼ16-MSPÊÇ·Ö¼¶µÄ

Ò»¸öMSPϺ¬ÓÐÒÔϽṹ£¬Èçͼ17Ëùʾ¡£

ͼ17-MSP½á¹¹

¿É¼û£¬MSP½á¹¹°üÀ¨£º

RCA¸ùÖ¤Êé

ICAÖмäÖ¤Êé

OU×éÖ¯µ¥Î»

¹ÜÀíÔ±Ö¤Êé

RCLµõÏúÖ¤ÊéÁбí

½áµãÉϵľßÌåÖ¤Êé

´æ´¢Ë½Ô¿µÄkeystore

TLSµÄ¸ùÖ¤ÊéÓëÖмäÖ¤Êé

3¡¢fabric½»Ò×Ìá½»Á÷³Ì

3.1 peer½áµãµÄ²¿Êð

peer½áµãÉϱ£´æÓÐÕ˱¾ledgerÒÔ¼°ÖÇÄܺÏÔ¼£¬ÈçÏÂͼËùʾ£º

channelÊÇÒ»¸öÂß¼­¸ÅÄ¿ÉÒÔͨ¹ýMSP¸ôÀëÈ«Íø²»Í¬×éÖ¯µÄ²ÎÓëÕߣ¬ÈçÏÂͼËùʾ£º

µ±Óж෽²ÎÓëÕßʱ£¬ÀýÈç4¸öorg×éÖ¯¡¢8¸öpeer½áµãʱ£¬ÆäÖÐchannelÁ¬½ÓÁËP1¡¢P3¡¢P5¡¢P7¡¢P8ÕâÎå¸ö½Úµã£¬ÆäËû3¸ö½Úµã¼ÓÈëÁËÆäËûchannel£¬Æä²¿ÊðͼÈçÏÂËùʾ£º

¼ÓÈëMSPÀ´¹ÜÀíÉí·Ýʱ£¬ÈçP1ºÍP2ÓÉORG1.MSP¹ÜÀí£¬¶øP3ºÍP4µÄÖ¤ÊéÔòÓÉORG2.MSP¹ÜÀí£¬ËûÃǹ²Í¬Ê¹ÓÃÒ»¸öchannel£¬ÔòÈçÏÂͼËùʾ£º

3.2 ½»Ò×µÄÖ´ÐÐÁ÷³Ì

È¥ÖÐÐÄ»¯µÄÉè¼Æ£¬±ØÈ»ÐèҪͨ¹ýͶƱ£¨¶àÊý´óÓÚÉÙÊý£©À´Î¬³ÖÊý¾ÝÒ»ÖÂÐÔ£¬¶øÈκÎͶƱ¶¼±ØÐë¾­ÀúÒÔÏÂÈý¸ö¹ý³Ì£º

1.ÓÐÒ»·½ÏÈÌá³öÒé°¸proposal£¬¸ÃÒé°¸ÓжÔÓ¦µÄÒ»ÅúͶƱÕßÐèÒª¶Ô¸Ã½á¹û±³Ê飬ÕâЩͶƱÕßÒÀ¾Ý¸÷×ÔµÄϰ¹ßͶƱ£¬²¢½«½á¹û·´À¡£»

2.ͳ¼ÆÍ¶Æ±½á¹û£¬Èô»ñµÃ¶àÊýͬÒ⣬²ÅÄܽøÐÐÏÂÒ»²½£»

3.½«»ñµÃ¶àÊýͬÒâµÄÒé°¸¼Ç¼ÏÂÀ´£¬ÇÒ¹«Ö®ÓÚÖÚ¡£

¶øÕâÈý²½fabricµ±È»Ò²ÉÙ²»ÁË£¬µ±È»ËüµÄ³Æ·¨¾ÍÓÐËù²»Í¬£¬Æä¶ÔÓ¦µÄÈý²½ÈçÏ£º

1.ÓÉclientÉϵÄCLI»òÕßSDK½øÐÐproposalÒé°¸µÄÌá³ö¡£client»áÒÀ¾ÝÖÇÄܺÏÔ¼chaincode¸ù¾Ý±³Êé²ßÂÔendorse policy¾ö¶¨°Ñproposal·¢ÍùÄÄЩ±³ÊéµÄpeer½Úµã£¬¶øpeer½Úµã½øÐÐͶƱ£¬client»ã×ܸ÷±³Êé½ÚµãµÄ½á¹û£»

2.client½«»ñµÃ¶àÊýͬÒâµÄÒé°¸Á¬Í¬¸÷peerµÄ±³Ê飨°üÀ¨ÆäͶƱ½á¹ûÒÔ¼°±³ÊéÇ©Ãû£©½»¸øorderring service£¬¶øorderer»á»ã×ܸ÷clientµÝ½»¹ýÀ´µÄtrasaction½»Ò×£¬ÅÅÐò¡¢´ò°ü¡£

3.orderer½«½»Ò×´ò°ü³ÉÇø¿éblock£¬È»ºó֪ͨËùÓÐcommit peer£¬¸÷peer¸÷×ÔÑéÖ¤½á¹û£¬×îºó½«Çø¿éblock¼Ç¼µ½×Ô¼ºµÄledgerÕ˱¾ÖС£

ÎÒÃÇ¿´Ò»¸ö¾ßÌåµÄÀý×Ó£¬ÈôchannelÉÏÓÐÈý¸öpeer±³ÊéÕߣ¬clientÌá½»Á÷³ÌÈçÏÂͼËùʾ£º

Ïêϸ½âÊÍÏÂÉÏͼµÄÁ÷³Ì£º

1.Ê×ÏÈ£¬client·¢ÆðÒ»¸ötransaction½»Ò×£¬º¬ÓÐ<clientID, chaincodeID, txPayLoad, timestamp, clientSig>µÈÐÅÏ¢£¬Ö¸Ã÷ÁË3WÒªËØ£ºÏûÏ¢ÊÇË­whoÔÚʲôʱ¼äwhen·¢ËÍÁËʲôwhat¡£¸ÃÏûÏ¢¸ù¾ÝchaincodeÖеı³Êé²ßÂÔ£¬·¢ÏòEP1¡¢EP2¡¢EP3ÕâÈý¸öpeer½Úµã¡£

2.ÕâÈý¸öpeer½ÚµãÄ£ÄâÖ´ÐÐÖÇÄܺÏÔ¼£¬²¢½«½á¹û¼°Æä¸÷×ÔµÄCAÖ¤ÊéÇ©Ãû·¢»¹client¡£clientÊÕ¼¯µ½×ã¹»ÊýÁ¿µÄ½á¹ûºóÔÙ½øÐÐÏÂÒ»²½¡£

3.client½«º¬±³Êé½á¹ûµÄtx½»Ò×·¢Ïòordering service¡£

4.ordering service½«´ò°üºÃµÄblock½»¸øcommitting peer CP1ÒÔ¼°EP1¡¢EP2¡¢EP3ÕâÈý¸ö±³ÊéÕߣ¬±³ÊéÕß´Ëʱ»áУÑé½á¹û²¢Ð´ÈëÊÀ½ç״̬ÒÔ¼°Õ˱¾ÖС£Í¬Ê±£¬clientÓÉÓÚ¶©ÔÄÁËÏûÏ¢£¬Ò²»áÊÕµ½Í¨Öª¡£

Èç¹ûÎÒÃÇ´Ó±à³ÌµÄ½Ç¶ÈÀ´¿´£¬ÔòÁ÷³Ì»á¸üÇå³þ£º

²Î¼ûÉÏͼ£¬AÊÇÎÒÃǵÄÓ¦ÓóÌÐò£¬Æä²½ÖèÈçÏ£º

1.AÊ×ÏÈÁ¬½Óµ½peer¡£

2.Aµ÷ÓÃchaincode·¢Æðproposal£»Óë´Ëͬʱ£¬P1ÊÕµ½ºóÏÈÄ£ÄâÖ´ÐУ¬ÔÙ²úÉú½á¹û·µ»Ø¸øA¡£

3.AÊÕµ½¸÷peer·µ»ØµÄ½á¹û¡£

4.AÏòO1·¢Æð½»Ò×£»Óë´Ëͬʱ£¬O1²úÉúÇø¿éºó»á֪ͨpeer£¬¶øpeer»á¸üÐÂÆäÕ˱¾¡£

5.×îºóͨ¹ý¶©ÔÄʼþAÊÕµ½Á˽á¹û¡£

×îºóÔÙϸ¿´ÏÂÕâÈý¸ö½×¶Î¡£

3.2.1 proposalÌá°¸½×¶Î

¿ÉÒÔ¿´µ½£¬A1·¢³öµÄ<T1, P>£¬ÊÕµ½ÁË<T1, R1, E1>ºÍ<T1, R2, E2>Á½¸ö½á¹û¡£

3.2.2 package´ò°ü½×¶Î

O1ÔÚÒ»¸öchannelÉÏ»áÊÕµ½Ðí¶àT½»Ò×£¬Ëü»á½«TÅÅÐò£¬ÔÚ´ïµ½blockµÄ×î´ó´óС£¨Ò»°ãÓ¦Åä1MÒÔÏ£¬·ñÔòÐÔÄÜϽµÑÏÖØ£¬kafkaÉó¤´¦ÀíСµãµÄÏûÏ¢£©»òÕß´ïµ½³¬Ê±Ê±¼äºó£¬´ò³ÉÇø¿éP2¡£

3.2.3 ÑéÖ¤½×¶Î

O1½«º¬ÓжàÌõ½»Ò×T´ò³ÉÇø¿éµÄB2·¢Íù¸÷peer½Úµã£¬¶øP1ºÍP2½«B2¼ÓÈë¸÷×ÔµÄLÕ˱¾ÖС£

4¡¢Ð¡½á

±¾ÎÄÆ«ÖØÓÚ¸ÅÄîµÄ½âÊÍ¡£fabricµÄÐí¶à˼ÏëÊÇÖµµÃÎÒÃǽøÒ»²½Ñо¿µÄ£¬ÆäÓÅÐãµÄʵÏÖ¿ÉÒÔ°ïÖúÎÒÃÇͨ¹ýfabric»ñµÃÇø¿éÁ´ÔÚÐÅÈδ´ÐÂÉϵÄ˼·¡£

   
4867 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶