¶«É­Æ½Ì¨ADLab£ºÒÔÌ«·»ÖÇÄܺÏÔ¼¶à¸ö¹¥»÷°¸Àý·ÖÎö

Ðû²¼Ê±¼ä 2018-08-25
 ½üÈÕ£¬¶«É­Æ½Ì¨ADLabʹÓÃ×îÐÂÉÏÏßµÄÖÇÄܺÏÔ¼¼à¿Øϵͳ·¢ÏÖÁË´óÁ¿ÒÔÌ«·»ÖÇÄܺÏÔ¼µÄ¹¥»÷ʼþ¡£ÔÚÖڶ๥»÷°¸ÀýÖУ¬ÓÐЩ©¶´³ÉÒò»ò¹¥»÷ģʽÉÙÓÐÑо¿Éæ¼°£¬Ò²·ºÆðÁËһЩ±ÈÁ¦Òþ±ÎµÄ¹¥»÷Á´¡£±¾ÎĽ«¶ÔÕâЩ¹¥»÷°¸Àý½øÐÐÏêϸ·ÖÎö¡£


Ò»¡¢Ê¹ÓÃOraclize·þÎñµÄÊèºö


        ΪÁ˽«Çø¿éÁ´¼¼ÊõÓ¦Óõ½ÏßÏ£¬ÀýÈ罫·É»úÑÓÎóÏÕ¡¢Êý×Ö»õ±Ò¶Ò»»µÈÒµÎñÉÏÁ´£¬Çø¿éÁ´ÐèÒª¾ßÓзÃÎÊÁ´ÍâÊý¾ÝµÄÄÜÁ¦¡£µ«ÊÇÈç¹ûÖÇÄܺÏÔ¼Ö±½Ó´ÓÍⲿ·þÎñ»ñÈ¡Êý¾Ý£¬ÓÉÓÚÍøÂçÑÓ³Ù£¬½Úµã´¦ÖÃËٶȵÈÖÖÖÖÔ­Òò£¬»áµ¼ÖÂÿ¸ö½áµã»ñÈ¡µÄÊý¾Ý²îÒ죬ʹÇø¿éÁ´µÄ¹²Ê¶»úÖÆʧЧ¡£


        ÏÖÓеĽâ¾ö·½°¸ÊÇʹÓõÚÈý·½·¢ËÍÇø¿éÁ´µÄ½»Ò×£¬½»Ò×»áͬ²½µ½Ã¿¸ö½Úµã£¬´Ó¶ø±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ¡£OraclizeÊÇÒ»¸öÔ¤ÑÔ»ú£¬ÎªÒÔÌ«·»µÈÇø¿éÁ´ÌṩÊý¾Ý·þÎñ£¬Ëü¶ÀÁ¢ÓÚÇø¿éÁ´ÏµÍ³Ö®Í⣬ÊÇÒ»ÆäÖÐÐÄ»¯µÄµÚÈý·½¡£Oraclize¿ÉÒÔÌṩµÄÊý¾Ý·ÃÎÊ·þÎñ°üÂÞËæ»úÊý¡¢URL·ÃÎÊ¡¢IPFSµÈ¡£OraclizeµÄ¼Ü¹¹ÈçͼËùʾ£º



¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        Oraclize²»ÊÇÁ´ÉÏÖ±½Ó¿ÉÒÔµ÷Óõĺ¯Êý£¬¶øÊÇÒ»¸öÁ´ÍâµÄʵÌ塣ΪÁËץȡÍⲿÊý¾Ý£¬ÒÔÌ«·»ÖÇÄܺÏÔ¼ÐèÒª·¢ËÍÒ»¸ö²éѯÇëÇó¸øOraclize£¬µ±Oraclize¼àÌýµ½Á´ÉÏÓÐÏà¹ØÇëÇóʱ£¬Á¢¼´¶Ô»¥ÁªÍøÉϵÄ×ÊÔ´Ìᳫ·ÃÎÊ£¬È»ºóµ÷ÓúÏÔ¼ÖеĻص÷º¯Êý__callback½«²éѯ½á¹û·µ»ØÇø¿éÁ´¡£


        ÀýÈ磬ÓÃÃÀÔª¶Ò»»ÒÔÌ«±ÒµÄÖÇÄܺÏÔ¼µÄÊý¾Ý²éѯÓï¾äÈçÏ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ¼àÌýµ½ÇëÇóºó£¬Oraclize»á·ÃÎÊURL»ñµÃ²éѯ½á¹û£¬È»ºóµ÷ÓÃ__callbackµÄº¯Êý£¬Oraclize·µ»ØµÄÊý¾Ýͨ¹ý__callbackº¯Êý²ÎÊý´«»ØÖÇÄܺÏÔ¼¡£ÉÏͼÖк¯Êýµ÷ÓõIJÎÊý[3]Öеġ°3334312e3533¡±¼´ÎªÆäʱµÄ»ãÂÊ£º1ETH = $341.53£¬ËæºóÖÇÄܺÏÔ¼»áƾ¾ÝÕâ¸ö²éѯ½á¹û½øÐкóÐøµÄÂß¼­´¦Öá£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


1¡¢¹¥»÷°¸Àý£ºSIGMA (0x03AF37073258B08FfFF303e9E07E8a0B7bfc4fd9)


        SIGMAºÏԼʹÓÃÁËOraclize·þÎñ²éѯ»ãÂÊ¡£¸ÃºÏÔ¼µÄ__callback»Øµ÷º¯ÊýÈçÏ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


         ÓÉÓÚ__callbackº¯ÊýÖдæÔÚÕûÊýÒç³ö£¬µ¼ÖÂownerµÄ´ú±ÒÓà¶î±»ÏÂÒç³ÉÒ»¸öºÜ´óµÄÖµ£¬µ¼Ö´ú±ÒÔö·¢¡£´Ó´ú±Ò·Ý¶îÅÅÃû¿ÉÒÔ¿´³ö¹¥»÷ÕßµÄÕË»§µØַΪ0x2ef045a75b967054791c23ab93fbc52cc0a35c80£¬¶ø¸ÃµØÖ·²¢²»ÊÇ´´½¨ºÏÔ¼µÄÕË»§µØÖ·(0xC7e92D8997359863a8F15FE87C0812D7A3a8F770)¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ¸ú×ÙTransactions£¬·¢ÏÖ0xC7e92D8997359863a8F15FE87C0812D7A3a8F770µ÷transfer_ownership½«ºÏÔ¼µÄownerÉèÖÃΪ0x2ef045a75b967054791c23ab93fbc52cc0a35c80¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        Õë¶ÔÕâ¸ö©¶´ÊÇ·ñʹÓÃSafeMath¾Í¿ÉÒÔ½â¾öÁËÄØ£¿´ð°¸ÊÇ·ñÈϵÄ¡£ÔÚOraclizeµ÷ÓÃ__callback֮ǰ£¬ÓÐÓû§¶Ô²éѯº¯ÊýµÄµ÷Ó㬶øÇÒÕâ¸öµ÷Óû¨·ÑÒÔÌ«±Ò¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ʹÓÃSafeMathµÄÇé¿öÏ£¬·¢ÉúÒç³öµÄÊÂÎñ»á»Ø¹ö£¬µ«±¾ÀýÖÐÄܹ»»Ø¹öµÄÖ»ÓÐOraclize¶Ô__callbackº¯Êýµ÷ÓõÄÊÂÎñ£¬¶ø֮ǰÓû§»¨·ÑÒÔÌ«±Ò·¢ÉúµÄÊÂÎñÔòÎÞ·¨»Ø¹ö¡£Õâ¸öÏÖÏóµÄ»ù´¡Ô­ÒòÊÇOraclizeÊÇÒ»¸ö¶ÀÁ¢µÄʵÌ壬µ¼ÖÂÂß¼­ÉÏÓ¦¸ÃÍêÕûµÄÒ»¸ö²Ù×÷±»Ö§½â³ÉÁËÁ½¸öÊÂÎñ¡£Òò´Ë£¬Í¨¹ýOraclizeÓëÁ´ÏÂÊý¾Ý½»»¥Ê±Ö»ÄÜÔ½·¢Ð¡ÐÄ£¬´úÂë±àдÐèÒªÔ½·¢½÷É÷¡£


¶þ¡¢ÅÓÊÏ´ú±ÒºÏԼ©¶´


        ÒÔÌ«·»ÖÇÄܺÏÔ¼ÖлìÔÓ½øÁ˲»ÉÙÅÓÊÏÆ­¾ÖºÏÔ¼£¬ËûÃÇÏòͶ×ÊÕßÔÊÐí£¬Èç¹ûÄãÏòijºÏԼͶ×ÊÒ»±ÊÒÔÌ«·»£¬Ëü¾Í»áÒÔÒ»¸ö¸ß»Ø±¨ÂÊ»ØÔùÄã¸ü¶àµÄÒÔÌ«±Ò£¬È»¶ø¸ß»Ø±¨Ö»ÄÜ´ÓºóÐøµÄͶ×ÊÕßÄÇÀïÔ´Ô´²»Í£µØÎüÈ¡×ʽðÒÔ·´À¡¸øÇ°ÃæµÄͶ×ÊÕß¡£


1¡¢¹¥»÷°¸Àý£ºETHX( 0x1c98eea5fe5e15d77feeabc0dfcfad32314fd481)


        ETHXÊÇÒ»¸öµäÐ͵ÄÅÓÊÏ´ú±ÒºÏÔ¼¡£¸ÃºÏÔ¼¿ÉÒÔ¿´³ÉÐéÄâ±Ò½»Ò×Ëù£¬µ«Ö»ÓÐETHºÍETHX (ERC20 token)½»Ò׶Ô£¬Ã¿´Î½»Ò×£¬¶¼ÓÐ5%µÄtoken·ÖÅä¸øÕû¸öƽ̨µÄÒÑÓеÄtoken³ÖÓÐÕߣ¬Òò´Ëtoken³ÖÓÐÕßÔÚ³Ö±ÒÆڼ䣬½«»áÖ±½Ó׬ȡйºÖÃÕߺ;ÉÅ×ÊÛÕßµÄÊÖÐø·Ñ¡£´ÓETHXºÏÔ¼´úÂë¿ÉÒÔ¿´³ö£¬¸ÃºÏÔ¼¶ÔtransferFromº¯Êý½øÐÐÁËÀ©Õ¹£¬transferFromº¯ÊýÊ×ÏȽøÐÐallowanceÏÞ¶îÅж¨£¬È»ºóµ÷ÓÃÁË×Ô½ç˵µÄtransferTokensº¯ÊýÀ´Íê³ÉתÕË¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ÔÚtransferTokensº¯ÊýÖУ¬µ±toÕË»§µØÖ·²»¼´ÊǺÏÔ¼µØÖ·£¬ÓÉÓÚÊÂÏȶÔfromÕË»§¶î¶È½øÐÐÁËÄþ¾²¼ì²é£¬Òò½ñºóÃæ¶ÔfromÕË»§µÄbalanceÔËËã²»»á·¢ÉúÒç³ö¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        µ±toÕË»§µØÖ·¼´ÊǺÏÔ¼µØַʱ£¬Ôòµ÷ÓÃsellº¯Êý£¬sellº¯ÊýÖÐÓÉÓÚ´úÂë±àдʧÎ󣬴íÎóµÄ½«fromд³Émsg.sender£¬¶Ômsg.senderµÄ¶î¶È½øÐÐÁ˼õ·¨²Ù×÷£¬¶øÔÚ¼õ·¨²Ù×÷ǰûÓнøÐÐÄþ¾²¼ì²é£¬Òò´Ë´æÔÚÒç³ö©¶´¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ΪÁËÍê³É¶ÔÕâ¸öÒç³ö©¶´µÄ¹¥»÷£¬¹¥»÷ÕßÐèÒª2¸öÕË»§A¡¢B£¬ÆäÖÐAÕË»§´ú±ÒÓà¶î²»Îª0£¬BÕË»§´ú±ÒΪ0¡£


        ? AÕË»§µ÷ÓÃapprove¸øBÊÚȨһ²¿ÃÅתÕ˶î¶È£¬¼ÙÉèÊÚȨ¶î¶ÈΪ1£»


        ? BÕË»§µ÷ÓÃtransferFrom£¬´ÓAÕË»§×ª1µ¥Ôª´ú±Òµ½ÖÇÄܺÏÔ¼£»transferFromµ÷ÓÃsellº¯Êýʱ´¥·¢ÕûÊýÒç³ö£¬¼´0-1=2^255¡£BÕË»§ÔÚÓà¶îΪ0µÄÇé¿öÏ»ñµÃÁË×î´ó¶î¶ÈµÄtoken¡£


        ÔÚETHXºÏÔ¼¹¥»÷Á´ÖУ¬¹¥»÷ÕßʹÓÃÁËÁ½¸öÕË»§µØÖ·£¬·Ö±ðΪ£º


        0x423b1404f51a2cdae57e597181da0a4ca4492f30


        0x17a6e289e16b788505903cc7cf966f5e33dd1b94


        Ê×ÏÈ£¬0x17a6e289e16b788505903cc7cf966f5e33dd1b94µ÷ÓÃapprove¸ø0x423b1404f51a2cdae57e597181da0a4ca4492f30ÊÚȨתÕ˶î¶È£¬²ÎÊývalue=1¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾

        È»ºó£¬0x423b1404f51a2cdae57e597181da0a4ca4492f30µ÷ÓÃtransferFromÒªÁ죬´ÓÕË»§0x17a6e289e16b788505903cc7cf966f5e33dd1b94ÏòETHXºÏÔ¼µØÖ·0x1c98eea5fe5e15d77feeabc0dfcfad32314fd481 תÒÆ1¸öToken¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        µ÷ÓÃÇ°£¬balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=0¡£µ÷Óúó£¬Òç³öºóbalance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=2^255¡£


        ¼à¿Øƽ̨ÏÔʾÒѾ­±»¹¥»÷µÄͬÀà´ú±ÒºÏÔ¼ÈçÏÂ±í£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


Èý¡¢SafeMathʹÓò»Í×


        ÒÔÌ«·»ÐéÄâ»úEVM½ç˵ÎÞ·ûºÅÕûÊýΪuint256£¬¿ÉÒÔÌåÏÖÒ»¸ö256λµÄ´óÕûÊý£¬µ«²¢Ã»ÓÐÌṩÒç³öµÄ¼ì²â»úÖÆ¡£OpenZepplineÊÇÒ»¸öµÚÈý·½ÖÇÄܺÏÔ¼¿â£¬ÊµÏÖÁËÒ»Ì×SafeMath¿âÀ´¼ì²âÒç³ö¡£Æä´úÂëÈçÏ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        SafeMathʹÓÃÄÚ½¨µÄrequire»òassertÀ´¼ì²éÔËËãÊÇ·ñ·¢ÉúÒç³ö£¬Èç¹û·¢ÉúÁËÒç³ö£¬requireºÍassertÖаüÂ޵ĴúÂë»áʹ¸ÃÊÂÎñ»Ø¹ö¡£µ«ÓÐЩ¿ª·¢Õß²»ÄÜÍêÈ«Àí½âSafeMathÄ£°æ´úÂ룬µ¼ÖºÏÔ¼´úÂëÖÐÈÔÈ»´æÔÚ©¶´¡£


1¡¢¹¥»÷°¸Àý£ºUCN (0x6EF5B9ae723Fe059Cac71aD620495575d19dAc42)

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        UCN£¨http://www.saveunicoins.com/Unicorn/index.html£©ÊÇÒ»¸öÖÇÄܺÏÔ¼DAppÓ¦Ó᣺ÏÔ¼´úÂëÔÚSafeMath¿âÖÐ×¢ÊÍassertÓï¾ä£¬Òò´ËSafeMathº¯ÊýµÈͬÓÚÖ±½Ó½øÐÐËãÊõÔËË㣬ûÓÐÈκÎÄþ¾²¼ì²é¡£¶øÇÒÔÚtransferFromº¯ÊýÖУ¬×¢ÊÍÖÐÉùÃ÷subº¯ÊýÊÇÄþ¾²µÄ£¬²»ÖªµÀÕâÊÇ¿ª·¢ÈËÔ±µÄÊèºö»¹ÊǹÊÒâÁôϵĺóÃÅ¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ÓÉÓÚsubº¯ÊýµÈͬÓÚËãÊõÔËË㣬balances[_from] = balances[_from].sub(_value);


        ´æÔÚÕûÊýÏÂÒ究´£¬¿ÉÒÔʹµÃÕË»§Óà¶îÄð³ÉÒ»¸ö¼«´óÖµ¡£


2¡¢¹¥»÷°¸Àý£ºEMVC£¨0xd3F5056D9a112cA81B0e6f9f47F3285AA44c6AAA£©


        EMVC£¨http://crypto7.biz/£©ºÏÔ¼´úÂëÔÚSafeMath¿âÖÐʹÓÃÁËÒ»¸ö×Ô½ç˵µÄassertÀ´È¡´úÄÚ½¨µÄassert¡£ÔÚassertº¯ÊýÖУ¬Èç¹û²ÎÊýassertionΪfalseÔòÖ±½Óreturn£¬²¢Ã»ÓнøÐÐÒì³£´¦Öá£Òò´ËSafeMathº¯ÊýµÈͬÓÚÖ±½Ó½øÐÐËãÊõÔËË㣬ûÓÐÈκÎÄþ¾²¼ì²é¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ¹¥»÷Õß¿ÉÒÔʹÓÃtransferº¯ÊýÉèÖÃÈÎÒâÕË»§Óà¶îΪÈÎÒâÖµ¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ËÄ¡¢×ܽá


        µ±ÖÇÄܺÏԼҪʵÏÖ¸ü¶à¹¦Ð§Ê±£¬´úÂë»áÏàÓ¦±äµÃÔ½·¢ÅÓ´ó£¬ÓëERC20³ß¶È´úÂëµÄ²îÒìÒ²Ô½À´Ô½´ó£¬Òò¶øDZÔڵĩ¶´ÃæòԽ·¢¶àÑù¡£ÎªÁ˱£Ö¤ÖÇÄܺÏÔ¼µÄÄþ¾²£¬³ý×ñÑ­Äþ¾²¿ª·¢Ô­Ôò¡¢Æ¾¾Ý¡°Check Lists¡±½øÐлùÏß¼ì²éÍ⣬»¹ÐèҪʵʩ¸üÉîÈëϸÖµÄÉó¼Æ¡£