Ë¢ÆÁµÄÇø¿éÁ´ ÏëÖªµÀµÄ¶¼ÔÚÕâÀ ¡ª¡ªÇø¿éÁ´ÖÇÄܺÏÔ¼¿ØÖÆÁ÷ʶ´ËÍâ´ó¹æģʵÑéÑо¿
Ðû²¼Ê±¼ä 2019-11-01¶àÄêÀ´£¬¶«Éƽ̨Á¬Ðø¹Ø×¢Çø¿éÁ´¼¼ÊõÄþ¾²ÎÊÌ⣬ÔÚÇø¿éÁ´×ÔÉíÄþ¾²ÒÔ¼°Çø¿éÁ´Ó¦ÓÃÄþ¾²·½Ã棬¶¼ÓÐÏàÓ¦µÄÑо¿ºÍʵ¼ù̽Ë÷¡£
¶«Éƽ̨ADLabÁªºÏµç×ӿƼ¼´óѧ¼ÆËã»úѧԺ£¨ÍøÂç¿Õ¼äÄþ¾²Ñ§Ôº£©³ÂÌü¸±½ÌÊÚÊ״ζÔÒÔÌ«·»Çø¿éÁ´ÖÇÄܺÏÔ¼¿ØÖÆÁ÷µÄʶ±ð½øÐÐÁË´ó¹æÄ£Ñо¿¡£¸Ã½á¹û¡¶A Large-Scale Empirical Study on Control FlowIdentification of Smart Contracts¡·ÓÚ2019Äê·¢±íÔÚÖйú¼ÆËã»úѧ»á£¨CCF£©ÍƼöµÄBÀàѧÊõ»áÒéInternational Symposium on Empirical SoftwareEngineering and Measurement¡£
¸ÃÑо¿·ÖÎöÁ˵±Ç°6¸öÖ÷Á÷µÄÖÇÄܺÏÔ¼¾²Ì¬·ÖÎö¹¤¾ß£¬Í¨¹ý¶ÔÒÔÌ«·»Çø¿éÁ´ÉÏÒѲ¿ÊðµÄÈ«²¿ºÏÔ¼£¨Ô¼500Íò£©ÊµÊ©Ö´Ðиú×ÙÀ´ÆÀ¹ÀËûÃǵľ²Ì¬¿ØÖÆÁ÷ʶ±ðÄÜÁ¦¡£ÊµÑéÖ¤Ã÷£¬Ò»Ð©µäÐ͵ÄÎÊÌâ»áµ¼ÖÂÉÏÊöÁ÷Ðй¤¾ß¶¼ÎÞ·¨Ê¶±ðÈ«²¿µÄ¿ØÖÆÁ÷£¨Èç²»Í걸µÄ´úÂëģʽ£©¡£Í¬Ê±£¬ÊµÑé·¢ÏÖͨ¹ýÖ´Ðиú×Ù¿ÉÒÔÓÐЧÔöÇ¿ÕâЩ¹¤¾ß¶Ô¿ØÖÆÁ÷µÄʶ±ð¡£Í¨¹ýÔÚOYENTEÖÐÒýÈëÖ´Ðиú×Ù£¬ÊµÏÖÁ˰Ѿ²Ì¬¿ØÖÆÁ÷·ÖÎöÎó±¨ÂʽµµÍ°Ù·ÖÖ®ÈýÊ®¡£Í¬Ê±£¬¸ÃÑо¿»ñµÃÁË×î¼ÑÂÛÎÄÌáÃû½±¡£

Ñо¿ÄÚÈÝÓÐÄÄЩ£¿
Ñо¿Ñ¡ÔñÁËÒÔϵÄÁù¿îÖ÷Á÷ÃæÏò×Ö½ÚÂëÖÇÄܺÏÔ¼µÄ·ÖÎö¹¤¾ß£º

ÉÏÊöÁù¿î¹¤¾ßÖУ¬Â·¾¶Ãô¸ÐµÄ¹¤¾ß¿ÉÄܱÈ·¾¶²»Ãô¸ÐµÄ¹¤¾ß·¢ÏÖ¸ü¶àµÄ¿ØÖÆתÒÆ·¾¶£¬ÒòΪËüÃDz»»á¼ì²éÔÚʵ¼ÊÌõ¼þϵķ¾¶¿É´ïÐÔ¡£ÆäÖÐOYENTEºÍMAIANÔÚ´¦ÖÃijЩºÏԼʱ»á´¥·¢Òì³££¬Í¨¹ý·ÖÎö·¢ÏÖ¹²ÓÐÈýÀàÔÒò£º¶ñÒâÎÞЧ×Ö½ÚÂë¡¢²»Ö§³ÖµÄ²Ù×÷ºÍÇó½âÆ÷Òì³£¡£ÎªÁËÉîÈë±ÈÁ¦£¬ÐÞ¸´ÁËÕâÈýÀർÖÂÒì³£µÄÈí¼þȱÏÝ¡£
ͨ¹ý¶Ôÿ¸ö¹¤¾ß½øÐÐÈ«²¿ÒÔÌ«·»Çø¿éÁ´ÖÇÄܺÏÔ¼µÄʵÑ飬µÃ³öÒÔϽáÂÛ£º
£¨1£©ÓÉÓÚ½ÓÄɵļ¼Êõ»òÕßÅäÖòîÒ죬ËùÒÔµ±Ç°Ö÷Á÷¹¤¾ßʶ´ËÍâÖÇÄܺÏÔ¼¿ØÖÆÁ÷ÊýÁ¿²îÒì¼Ó´ó£»ÏßÐÔ·´»ã±à±ÈµÝ¹é·´»ã±àÄÜʶ±ð¸ü¶à¿ØÖÆÁ÷£¬ÒòΪµÝ¹é·ÖÎöÔÚʶ±ðµ½·Ç·¨×ªÒÆÄ¿±êʱ¾ÍÍ£Ö¹ÊÂÇé¡£
£¨2£©²îÒì·ÖÎö¹¤¾ßÔÚ·ÖÎöÅÓ´óÖÇÄܺÏÔ¼¿ØÖÆÁ÷ʱÄÜÁ¦²îÒì½Ï´ó£¬µäÐÍÔÒòÓз¾¶±¬Õ¨¡¢ÌáÇ°½áÊøÌõ¼þºÍ²»Í걸µÄ´úÂëģʽ¡£
£¨3£©ÉÏÊöµÄ6¿îÖ÷Á÷·ÖÎö¹¤¾ß½öÕë¶Ô1.7%µÄÖÇÄܺÏÔ¼²ÅÆøʶ±ð³öÏàͬµÄ¿ØÖÆÁ÷תÒÆ¡£
ΪÁËÌáÉýºÏÔ¼·ÖÎö¹¤¾ßµÄ¿ØÖÆÁ÷·ÖÎöÄÜÁ¦£¬Ìá³öÁË»ùÓÚÖ´ÐÐtraceµÄ¿ØÖÆÁ÷ʶ±ðÔöÇ¿¡£ÖÇÄܺÏÔ¼Ö´ÐÐtraceµÄÒ»ÖÖ»ñÈ¡·½Ê½ÊÇͨ¹ý³ß¶È±à³Ì½Ó¿Ú web3.debug.traceTransaction()£¬µ«¸Ã½Ó¿ÚÐèÒªÌṩºÏÔ¼Ö´ÐеĽ»Ò×¹þÏ£Öµ¡£Í¬Ê±£¬¸Ã½Ó¿ÚµÄÔËÐÐЧÂʺܵͣ¬Í¨¹ý·ÖÎöÔ´Âë·¢ÏÖÆäÔÚ»ñÈ¡trace֮ǰÐèÒª×öÔËÐл·¾³³õʼ»¯¡¢¹¹½¨Õýȷ״̬ºÍÖطŽ»Ò׼Ǽ£¬¼ÓÉÏweb3±à³Ì½Ó¿ÚÊÇRPCµ÷Óùý³Ì£¬Òò´ËЧÂÊÄÑÒÔÌáÉý£¬×îÖÕÑ¡ÔñÁ˶ÔÒÔÌ«·»Çø¿éÁ´Öն˽øÐвå×®£¬ÒòΪ¸ÃÖÕ¶ËÄÜÖ´ÐÐÈ«²¿µÄÀúÊ·ºÏÔ¼²Ù×÷¡£¾ßÌåÀ´Ëµ£¬Í¨¹ý¶ÔJUMPºÍJUMPI²Ù×÷½øÐÐÁ˲å×®£¬×îÖյõ½ÁË6300ÍòµÄÖ´ÐÐtrace¡£Í¬Ê±£¬Ò²¶ÔÕâЩtrace½øÐÐÁËÇиÒòΪºÏÔ¼µÄÖ´ÐÐtrace¼Ç¼»á°üÂÞºÏÔ¼ÄڵĿØÖÆתÒƺͺÏÔ¼¼äµÄ¿ØÖÆתÒÆ¡£Í¨¹ý¶ÔÉÏÊö¹¤¾ßʶ´ËÍâ¿ØÖÆÁ÷ºÍÖ´ÐÐtrace»ñµÃµÄ¿ØÖÆÁ÷½øÐÐÁË·ÖÎö£¬·¢ÏÖÖ´ÐÐtrace¿ÉÒÔÌáÉýÉÏÊö¹¤¾ßµÄ¿ØÖÆÁ÷ʶ±ðÄÜÁ¦£¬ÓÈÆäÊǶÔÓÚMAIANºÍMiasm¹¤¾ß£¬ÌáÉýÄÜÁ¦½ÔÁè¼Ý°Ù·ÖÖ®°ËÊ®£»¼´Ê¹ÊÇ×îÓÅÐãµÄ¿ØÖÆÁ÷·¢ÏÖ¹¤¾ßPorosity£¬ÌáÉýÄÜÁ¦Ò²ÓаٷÖ֮ʮ¡£
ΪÁËÑéÖ¤»ùÓÚÖ´ÐÐtraceµÄÓÐЧÐÔ£¬Ñ¡ÔñÁËOYENTE¹¤¾ß½øÐÐÔöǿʵÏÖºÍÑéÖ¤£¬ÔöÇ¿µÄ¾ßÌåËã·¨ÈçÏÂͼËùʾ¡£

Ñо¿½á¹ûÊÇʲô£¿
ʵÑé½á¹û±íÃ÷£¬Ö´ÐÐtrace¿ÉÒÔÓÐЧÌáÉýÉÏÊö¹¤¾ßµÄÖÇÄܺÏÔ¼¿ØÖÆÁ÷ʶ±ðÄÜÁ¦£¬ÄÜ·¢ÏÖÕâЩ¹¤¾ß²»ÄÜ·¢ÏֵĿØÖÆתÒÆ¡£

ͨ¹ý¶ÔOYENTEµÄÔ´Âë½øÐÐÁËÐÞ¸ÄÒÔǶÈëÔöÇ¿Ëã·¨£¬¼°¶ÔOYENTEÄÜʶ´ËÍâËÄÖÖºÏԼ©¶´½øÐÐÁËʵÑ飬½áÂÛ¼ûÏÂ±í¡£Õë¶Ô½»Ò×˳ÐòÒÀÀµ¡¢Ê±¼äÒÀÀµºÍÖØÈëÀàÐ͵Ä©¶´£¬ÔöÇ¿OYENTEÄܼì²â¸ü¶àµÄ©¶´¡£Õë¶Ôδ´¦ÖÃÒ쳣©¶´£¬ÔöÇ¿OYENTEδÄÜÌáÉý¼ì²âÄÜÁ¦£»¶ÔOYENTE½øÐÐÔ´Âë·ÖÎö·¢ÏÖ£¬ÕâÊÇÒòΪÕâÀ੶´ÊÇÖ±½ÓÓúÏÔ¼×Ö½ÚÂëɨÃèÀ´¼ì²âµÄ£¬Óë¿ØÖÆÁ÷·ÖÎöÎ޹ء£

´Ë´ÎÕë¶ÔÒÔÌ«·»Çø¿éÁ´ÖÇÄܺÏÔ¼¿ØÖÆÁ÷ʶ´ËÍâ´ó¹æÄ£Éî¶ÈÑо¿£¬È¡µÃÁ˶àÏîеķ¢ÏÖ¡£Í¨¹ý²å×®ÒÔÌ«·»¿Í»§¶Ë£¬ÊÕ¼¯ÁËÈ«²¿µÄÖÇÄܺÏÔ¼²¢»¹ÔÁËÈ«²¿µÄÖ´ÐÐtrace¡£ÊµÑéÖ¤Ã÷£¬Ö´ÐÐtrace¿ÉÒÔÌáÉýµ±Ç°Ö÷Á÷µÄÖÇÄܺÏÔ¼·ÖÎö¹¤¾ßµÄ¿ØÖÆÁ÷ʶ±ðÄÜÁ¦£¬¸Ã·¢ÏÖ½«ÓÐÖúÓÚÒÔÌ«·»Óû§¡¢¿ª·¢ÕߺÍÑо¿·ÖÎöÈËÔ±¿ªÕ¹¸üÉîÈëµÄÖÇÄܺÏÔ¼Ñо¿¡£
×÷ΪÐÅÏ¢Äþ¾²ÐÐÒµÁì¾üÆóÒµ£¬¶«Éƽ̨¼áÊسõÐļ°×ÔÖ÷´´Ðµľ«Éñ£¬Ê¼ÖÕÖØÊÓ¶ÔÇø¿éÁ´¼¼ÊõÄþ¾²ÎÊÌâµÄÑо¿Óë̽Ë÷£¬È«Á¦±£ÕÏÓû§¶ÔÇø¿éÁ´µÄÄþ¾²ÐèÇó¡£