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

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


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


        ΪÁ˽«Çø¿éÁ´¼¼ÊõÀûÓõ½ÏßÏ£¬ÀýÈ罫·É»úÑÓÎóÏÕ¡¢Êý×ÖÇ®±Ò¶Ò»»µÈÒµÎñÉÏÁ´£¬Çø¿éÁ´±ØÒªÓµÓнӼûÁ´±íÊý¾ÝµÄÄÜÁ¦ ¡£µ«ÊÇÈôÊÇÖÇÄܺÏÔ¼Ö±½Ó´Ó±í²¿·þÎñ»ñÈ¡Êý¾Ý£¬ÓÉÓÚÍøÂçÑÓ³¤£¬½Úµã´¦ÖÿìÂʵȸ÷ÀàÔ­Òò£¬»áµ¼ÖÂÿ¸ö½áµã»ñÈ¡µÄÊý¾Ý·ÖÆç£¬Ê¹Çø¿éÁ´µÄ¹²Ê¶»úÔìʧЧ ¡£


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



GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        Oraclize²»ÊÇÁ´ÉÏÖ±½ÓÄܹ»Å²Óõĺ¯Êý£¬¶øÊÇÒ»¸öÁ´±íµÄʵÌå ¡£ÎªÁËץȡ±í²¿Êý¾Ý£¬ÒÔÌ«·»ÖÇÄܺÏÔ¼±ØÒª·¢ËÍÒ»¸ö²éÎÊÒªÇó¸øOraclize£¬µ±Oraclize¼àÌýµ½Á´ÉÏÓÐÓйØÒªÇóʱ£¬µ±¼´¶Ô»¥ÁªÍøÉϵÄ×ÊÔ´ÌáÒé½Ó¼û£¬¶øºóŲÓúÏÔ¼ÖеĻص÷º¯Êý__callback½«²éÎÊÁ˾ַµ»ØÇø¿éÁ´ ¡£


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        Õë¶ÔÕâ¸ö·ì϶ÊÇ·ñʹÓÃSafeMath¾ÍÄܹ»½â¾öÁËÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ ¡£ÔÚOraclizeŲÓÃ__callback֮ǰ£¬ÓÐЧ»§¶Ô²éÎʺ¯ÊýµÄŲÓ㬲¢ÇÒÕâ¸öŲÓÃÆÆ·ÑÒÔÌ«±Ò ¡£

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


¶þ¡¢ÅÓÊÏ´ú±ÒºÏÔ¼·ì϶


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


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


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ΪÁËʵÏÖ¶ÔÕâ¸öÒç¶Âí½ÅµÄ¹¥»÷£¬¹¥»÷Õß±ØÒª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 ¡£

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾

        ¶øºó£¬0x423b1404f51a2cdae57e597181da0a4ca4492f30ŲÓÃtransferFrom²½Ö裬´ÓÕË»§0x17a6e289e16b788505903cc7cf966f5e33dd1b94ÏòETHXºÏÔ¼µØÖ·0x1c98eea5fe5e15d77feeabc0dfcfad32314fd481 ×ªÒÆ1¸öToken ¡£

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ŲÓÃǰ£¬balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=0 ¡£Å²Óúó£¬Òç³öºóbalance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=2^255 ¡£


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


Èý¡¢SafeMathʹÓò»µ±


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


        ´æÔÚÕûÊýÏÂÒç·ì϶£¬Äܹ»Ê¹µÃÕË»§Óà¶îÔì³ÉÒ»¸ö¼«´óÖµ ¡£


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


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


        ¹¥»÷ÕßÄܹ»Ê¹ÓÃtransferº¯ÊýÉèÖÃËÁÒâÕË»§Óà¶îΪËÁÒâÖµ ¡£

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ËÄ¡¢×ܽá


        µ±ÖÇÄܺÏԼҪʵÏÖ¸ü¶àÖ°ÄÜʱ£¬´úÂë»áÏàÓ¦±äµÃÔ½·¢¸´ÔÓ£¬ÓëERC20³ß¶È´úÂëµÄ²î¾àÒ²Ô½À´Ô½´ó£¬Òò¶øÇ±Ôڵķì϶ÐÎòԽ·¢¶àÑù ¡£ÎªÁ˱£ÕÏÖÇÄܺÏÔ¼µÄ°²È«£¬³ý×ñÑ­°²È«¿ª·¢×¼Ôò¡¢ÒÀÕÕ¡°Check Lists¡±½øÐлùÏ߲鳭±í£¬»¹±ØÒªÖ´ÐиüÉî¿ÌÏêϸµÄÉó¼Æ ¡£