Ë¢ÆÁµÄÇø¿éÁ´ Ïë֪·µÄ¶¼ÔÚÕâÀ ¡ª¡ªÇø¿éÁ´ÖÇÄܺÏÔ¼½ÚÔìÁ÷ʶ´ËÍâ´ó¹æÄ£³¢ÊÔ×êÑÐ

°ä²¼¹¦·ò 2019-11-01
Öй²ÖÐÑëÕþÖξÖ10ÔÂ24ÈÕÏÂÎç¾ÍÇø¿éÁ´¼¼Êõ·¢Õ¹Ê¾×´ºÍÇ÷Ïò½øÐеÚÊ®°Ë´Î¼¯Ìå½ø½¨ £¬»áÒéÇ¿µ÷Çø¿éÁ´¼¼ÊõµÄ¼¯³ÉÀûÓÃÔÚеļ¼Êõ¸Ä¸ïºÍ²úҵˢÐÂÖÐÆð×ųÁÒª×÷Óà £¬Òª°ÑÇø¿éÁ´×÷ΪÖ÷Ìâ¼¼Êõ×ÔÖ÷´´ÐµijÁÒªÍ»ÆÆ¿Ú £¬Ã÷È·Ö÷¹¥·½Ïò £¬¼Ó´óͶÈëÁ¦¶È £¬×ÅÁ¦¹¥¿ËÒ»Åú¹Ø¼üÖ÷Ìâ¼¼Êõ £¬¼Ó¿ìÍÆ¶¯Çø¿éÁ´¼¼ÊõºÍ²úÒµ´´Ð·¢Õ¹¡£


¶àÄêÀ´ £¬GA»Æ½ð¼×³ÖÐø¹Ø×¢Çø¿éÁ´¼¼Êõ°²È«ÎÊÌâ £¬ÔÚÇø¿éÁ´×ÔÉí°²È«ÒÔ¼°Çø¿éÁ´ÀûÓð²È«·½Ãæ £¬¶¼ÓÐÏàÓ¦µÄ×êÑкÍʵ¼ÊË÷Çó¡£

GA»Æ½ð¼×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ÖÐÒýÈëÖ´Ðиú×Ù £¬ÊµÏÖÁ˰Ѿ²Ì¬½ÚÔìÁ÷·ÖÎöÎó±¨ÂʽµµÍ°Ù·ÖÖ®ÈýÊ®¡£Í¬Ê± £¬¸Ã×êÑлñµÃÁË×î¼ÑÂÛÎÄÌáÃû½±¡£

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

×êÑÐÄÚÈÝÓÐÄÄЩ£¿

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

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

ÉÏÊöÁù¿î¹¤¾ßÖÐ £¬õè¾¼ûô¸ÐµÄ¹¤¾ß¿ÉÄܱÈõè¾¶²»Ãô¸ÐµÄ¹¤¾ß·¢ÏÖ¸ü¶àµÄ½ÚÔì×ªÒÆõè¾¶ £¬ÓÉÓÚËüÃDz»»á²é³­ÔÚÏÖʵǰÌáϵÄõè¾¶¿É´ïÐÔ¡£ÆäÖÐOYENTEºÍMAIANÔÚ´¦ÖÃijЩºÏԼʱ»á´¥·¢Òì³£ £¬Í¨¹ý¶ÈÎö·¢ÏÖ¹²ÓÐÈýÀàÔ­Òò£º¶ñÒâÎÞЧ×Ö½ÚÂë¡¢²»Ö§³ÖµÄ²Ù×÷ºÍÇó½âÆ÷Òì³£¡£ÎªÁËÉî¿Ì±ÈÁ¦ £¬½¨¸´ÁËÕâÈýÀർÖÂÒì³£µÄÈí¼þȱµã¡£

ͨ¹ý¶Ôÿ¸ö¹¤¾ß½øÐÐÈ«ÊýÒÔÌ«·»Çø¿éÁ´ÖÇÄܺÏÔ¼µÄ³¢ÊÔ £¬µÃ³öÒÔϽáÂÛ£º


£¨1£©ÓÉÓÚѡȡµÄ¼¼Êõ»òÕßÅäÖÃ·ÖÆç £¬ËùÒÔµ±Ç°Ö÷Á÷¹¤¾ßʶ´ËÍâÖÇÄܺÏÔ¼½ÚÔìÁ÷ÊýÁ¿²î¾à¼Ó´ó £»ÏßÐÔ·´»ã±à±ÈµÝ¹é·´»ã±àÄܼø±ð¸ü¶à½ÚÔìÁ÷ £¬ÓÉÓڵݹé·ÖÎöÔÚ¼ø±ðµ½·¸·¨×ªÒÆÖ¸±êʱ¾ÍÖÕ³¡¹¤×÷¡£


£¨2£©·ÖÆç·ÖÎö¹¤¾ßÔÚ·ÖÎö¸´ÔÓÖÇÄܺÏÔ¼½ÚÔìÁ÷ʱÄÜÁ¦²î¾à½Ï´ó £¬µäÐÍÔ­ÒòÓÐõè¾¶±¬Õ¨¡¢ÌáǰʵÏÖǰÌáºÍ²»ÍêÕûµÄ´úÂëģʽ¡£


£¨3£©ÉÏÊöµÄ6¿îÖ÷Á÷·ÖÎö¹¤¾ß½öÕë¶Ô1.7%µÄÖÇÄܺÏÔ¼ÄÜÁ¦¼ø±ð³öÒ»ÑùµÄ½ÚÔìÁ÷×ªÒÆ¡£


£¨4£©ºÏÔ¼µÄ¸´ÔÓ¶ÈÔ½¸ß £¬·ÖÆç·ÖÎö¹¤¾ßµÃµ½Ò»ÖÂÁ˾ÖÔ½ÄÑÌâ¡£


ΪÁËÌáÉýºÏÔ¼·ÖÎö¹¤¾ßµÄ½ÚÔìÁ÷·ÖÎöÄÜÁ¦ £¬Ìá³öÁË»ùÓÚÖ´ÐÐtraceµÄ½ÚÔìÁ÷¼ø±ð¼ÓÇ¿¡£ÖÇÄܺÏÔ¼Ö´ÐÐtraceµÄÒ»ÖÖ»ñÈ¡·½Ê½ÊÇͨ¹ý³ß¶È±à³Ì½Ó¿Ú web3.debug.traceTransaction() £¬µ«¸Ã½Ó¿Ú±ØÒªÌṩºÏÔ¼Ö´ÐеÄÂòÂô¹þÏ£Öµ¡£Í¬Ê± £¬¸Ã½Ó¿ÚµÄÔËÐÐЧÄÜºÜµÍ £¬Í¨¹ý¶ÈÎöÔ´Âë·¢ÏÔìäÔÚ»ñÈ¡trace֮ǰ±ØÒª×öÔËÐл·¾³³õʼ»¯¡¢¹¹½¨Õýȷ״̬ºÍ³Á·ÅÂòÂô¼Í¼ £¬¼ÓÉÏweb3±à³Ì½Ó¿ÚÊÇRPCŲÓùý³Ì £¬Òò¶øÐ§ÄÜÄÑÒÔÌáÉý £¬×îÖÕÑ¡ÔñÁ˶ÔÒÔÌ«·»Çø¿éÁ´Öն˽øÐвå×® £¬ÓÉÓÚ¸ÃÖÕ¶ËÄÜÖ´ÐÐÈ«ÊýµÄº¹ÇàºÏÔ¼²Ù×÷¡£¾ßÌåÀ´Ëµ £¬Í¨¹ý¶ÔJUMPºÍJUMPI²Ù×÷½øÐÐÁ˲å×® £¬×îÖյõ½ÁË6300ÍòµÄÖ´ÐÐtrace¡£Í¬Ê± £¬Ò²¶ÔÕâЩtrace½øÐÐÁËÇиî £¬ÓÉÓÚºÏÔ¼µÄÖ´ÐÐtrace¼Í¼»áÔ̺¬ºÏÔ¼ÄڵĽÚÔì×ªÒÆºÍºÏÔ¼¼äµÄ½ÚÔì×ªÒÆ¡£Í¨¹ý¶ÔÉÏÊö¹¤¾ßʶ´ËÍâ½ÚÔìÁ÷ºÍÖ´ÐÐtrace»ñµÃµÄ½ÚÔìÁ÷½øÐÐÁË·ÖÎö £¬·¢ÏÖÖ´ÐÐtraceÄܹ»ÌáÉýÉÏÊö¹¤¾ßµÄ½ÚÔìÁ÷¼ø±ðÄÜÁ¦ £¬ÓÈÆäÊǶÔÓÚMAIANºÍMiasm¹¤¾ß £¬ÌáÉýÄÜÁ¦½Ô³¬¹ý°Ù·ÖÖ®°ËÊ® £»¼´±ãÊÇ×îÓÅÁ¼µÄ½ÚÔìÁ÷·¢ÏÖ¹¤¾ßPorosity £¬ÌáÉýÄÜÁ¦Ò²ÓаٷÖ֮ʮ¡£


ΪÁËÑéÖ¤»ùÓÚÖ´ÐÐtraceµÄÓÐЧÐÔ £¬Ñ¡ÔñÁËOYENTE¹¤¾ß½øÐмÓǿʵÏÖºÍÑéÖ¤ £¬¼ÓÇ¿µÄ¾ßÌåËã·¨ÈçÏÂͼËùʾ¡£

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

×êÑÐÁ˾ÖÊÇʲô£¿

³¢ÊÔÁ˾ÖÅú×¢ £¬Ö´ÐÐtraceÄܹ»ÓÐЧÌáÉýÉÏÊö¹¤¾ßµÄÖÇÄܺÏÔ¼½ÚÔìÁ÷¼ø±ðÄÜÁ¦ £¬ÄÜ·¢ÏÖÕâЩ¹¤¾ß²»ÄÜ·¢ÏֵĽÚÔì×ªÒÆ¡£ 

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

ͨ¹ý¶ÔOYENTEµÄÔ´Âë½øÐÐÁËÅú¸ÄÒÔǶÈë¼ÓÇ¿Ëã·¨ £¬¼°¶ÔOYENTEÄÜʶ´ËÍâËÄÖÖºÏÔ¼·ì϶½øÐÐÁ˳¢ÊÔ £¬½áÂÛ¼ûϱí¡£Õë¶ÔÂòÂô°¤´ÎÒÀÀµ¡¢¹¦·òÒÀÀµºÍ³ÁÈëÀàÐ͵ķì϶ £¬¼ÓÇ¿OYENTEÄܼì²â¸ü¶àµÄ·ì϶¡£Õë¶Ôδ´¦ÖÃÒì³£·ì϶ £¬¼ÓÇ¿OYENTEδÄÜÌáÉý¼ì²âÄÜÁ¦ £»¶ÔOYENTE½øÐÐÔ´Âë·ÖÎö·¢ÏÖ £¬ÕâÊÇÓÉÓÚÕâÀà·ì϶ÊÇÖ±½ÓÓúÏÔ¼×Ö½ÚÂëɨÃèÀ´¼ì²âµÄ £¬Óë½ÚÔìÁ÷·ÖÎöÎ޹ء£

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

Õâ´ÎÕë¶ÔÒÔÌ«·»Çø¿éÁ´ÖÇÄܺÏÔ¼½ÚÔìÁ÷ʶ´ËÍâ´ó¹æÄ£Éî¶È×êÑÐ £¬»ñµÃÁ˶àÏîеķ¢ÏÖ¡£Í¨¹ý²å×®ÒÔÌ«·»¿Í»§¶Ë £¬ÍøÂçÁËÈ«ÊýµÄÖÇÄܺÏÔ¼²¢»¹Ô­ÁËÈ«ÊýµÄÖ´ÐÐtrace¡£³¢ÊÔÖ¤Ã÷ £¬Ö´ÐÐtraceÄܹ»ÌáÉýµ±Ç°Ö÷Á÷µÄÖÇÄܺÏÔ¼·ÖÎö¹¤¾ßµÄ½ÚÔìÁ÷¼ø±ðÄÜÁ¦ £¬¸Ã·¢ÏÖ½«ÓÐÖúÓÚÒÔÌ«·»Óû§¡¢¿ª·¢ÕߺÍ×êÑзÖÎöÈËÔ±·¢Õ¹¸üÉî¿ÌµÄÖÇÄܺÏÔ¼×êÑС£

×÷ΪÐÅÏ¢°²È«ÐÐÒµÁì¾üÆóÒµ £¬GA»Æ½ð¼×¼áÊØ³õÐļ°×ÔÖ÷´´ÐµÄÐÄÁé £¬Ê¼ÖÕÆ÷³Á¶ÔÇø¿éÁ´¼¼Êõ°²È«ÎÊÌâµÄ×êÑÐÓëË÷Çó £¬È«Á¦±£ÏÕÓû§¶ÔÇø¿éÁ´µÄ°²È«ÐèÒª¡£