´Ósolidity˵»°¸öÐÔÉî¶È½â¶ÁÒÔÌ«·»ÖÇÄܺÏÔ¼·ì϶µÀÀíºÍ¹¥»÷ÀûÓÃ

°ä²¼¹¦·ò 2018-08-02
1 ¸ÅÊö

        Ëæ×ÅÇø¿éÁ´¡¢ÒÔÌ«·»¼¼ÊõµÄ¹ÄÆðºÍ²»ÐݳÉÊ죬£¬£¬£¬£¬£¬£¬°²È«ÎÊÌâÒ²ËæÖ®¶øÀ´£¬£¬£¬£¬£¬£¬£¬½ñÄêÖÇÄܺÏÔ¼·ì϶ÒѾ­Èöà¸öÇø¿éÁ´ÏîÄ¿¼Ûֵ˲¼ä¹éÁã¡£¡£¡£¡£¡£¡£ÖÇÄܺÏÔ¼µÄ¿ª·¢Ëµ»°¡¢Éè¼ÆÄ£Ê½¡¢ÔËÐлúÔì¶¼Ó봫ͳÀûÓÃÓнϴó²î¾à£¬£¬£¬£¬£¬£¬£¬Ëü¼Å×д«Í³µÄ°²È«·çÏÕ(ÈçÕûÊýÒç³öµÈ)£¬£¬£¬£¬£¬£¬£¬ÓÖÓйÖÒìµÄÐÂÐÍ·çÏÕ(Èç˽ÓбäÁ¿²»¡°Ë½ÓÓ×±ºÍÌØÊâÀàÐͱäÁ¿¸²¸ÇµÈ)¡£¡£¡£¡£¡£¡£Ñз¢ÈËÔ±ÈôÊDz»ÄÜÉî¿ÌÀí½âÕâЩÖ÷ÌâµÀÀí£¬£¬£¬£¬£¬£¬£¬ÔòºÜÈÝÒ×±àд³ö´æÔÚ·ì϶µÄÖÇÄܺÏÔ¼£»£»£»£» £»£»£»¶ñÒâºÏÔ¼Ò²Äܹ»Í¨¹ýÕâÖÖ²½ÖèÁôÏÂÒñ±Î·ì϶£¬£¬£¬£¬£¬£¬£¬ºýŪºÏԼͶ×ÊÈ˲¢°µµØÀïÊո¡£¡£¡£¡£¡£±¾ÎÄÒÔWCTF2018µÄһ·ÖÇÄܺÏÔ¼·ì϶ÈüÌâ[1]ΪÀý£¬£¬£¬£¬£¬£¬£¬´Ósolidity˵»°¸öÐÔÆô³Ì£¬£¬£¬£¬£¬£¬£¬Éî¶È½â¶ÁÒÔÌ«·»ÖÇÄܺÏÔ¼·ì϶µÀÀíºÍ¹¥»÷ÀûÓᣡ£¡£¡£¡£¡£

2 ·ì϶ºÏÔ¼·ÖÎö

        ¸ÃºÏÔ¼ÊÇÒ»¸öÒøÐÐÀàºÏÔ¼£¬£¬£¬£¬£¬£¬£¬Óû§Äܹ»´æÈëethµ½¸ÃºÏÔ¼£¬£¬£¬£¬£¬£¬£¬²¢ÔÚ´æÈëµ½ÆÚÖ®ºóÈ¡³ö¡£¡£¡£¡£¡£¡£Ô­Ìâ¶Ô¸ÃºÏÔ¼ÃèÊöÈçÏ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ¸ÃºÏÔ¼ÖдæÔÚ·ì϶£¬£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÀûÓ÷ì϶Äܹ»µÁÈ¡ºÏÔ¼ÖеÄËùÓÐÓà¶î¡£¡£¡£¡£¡£¡£·ìÏ¶Éæ¼°µ½ÕûÊýÒç³ö¡¢±äÁ¿¸²¸ÇÒÔ¼°ÓɱäÁ¿¸²¸Çµ¼ÖµıäÁ¿Ï໥ӰÏì¡£¡£¡£¡£¡£¡£

        ºÏÔ¼Ô´ÂëÈçÏ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ÒªÌáÈ¡ºÏÔ¼µÄÈ«ÊýºÏÔ¼Óà¶î£¬£¬£¬£¬£¬£¬£¬confiscate º¯ÊýÊǹؼü£¬£¬£¬£¬£¬£¬£¬µ«¸Ãº¯ÊýŲÓóɹ¦±ØÐëÂú×㣺

        ? msg.sender == owner

        ? secret == _secret

        ? now >= balances[account].deposit_term + 1 years

        ¹¥»÷ÕßÄܹ»Í¨¹ýºÏÔ¼´æ´¢½Ó¼û¡¢ÕûÊýÒç³öºÍ±äÁ¿¸²¸ÇÀ´Ë³´Î»ú¹ØÉÏÊöǰÌá¡£¡£¡£¡£¡£¡£

2.1 solidityÈ«¾Ö±äÁ¿´æ´¢

        ÔÚBelluminarBankºÏÔ¼ÖУ¬£¬£¬£¬£¬£¬£¬Ò»¹²ÓÐ4¸öÈ«¾Ö±äÁ¿£¬£¬£¬£¬£¬£¬£¬±ðÀëÊÇbalances¡¢head¡¢owner¡¢secrete¡£¡£¡£¡£¡£¡£ËüÃǵÄĬÈϽӼûÊôÐÔÊÇprivate£¬£¬£¬£¬£¬£¬£¬¿´ÉÏÈ¥Ö»ÓкÏÔ¼×Ô¼º¿ÉÄܽӼûÕâЩ±äÁ¿¡£¡£¡£¡£¡£¡£ÊÂʵÉÏ£¬£¬£¬£¬£¬£¬£¬ºÏÔ¼µÄËùÓбäÁ¿Êý¾Ý¶¼Êǹ«¿ª´æ´¢ÔÚÁ´ÉϵÄÇø¿éÖУ¬£¬£¬£¬£¬£¬£¬ÈκÎÈ˶¼Äܹ»Í¨¹ý½Ó¼û´æ´¢Êý¾ÝÀ´»ñµÃÕâЩ±äÁ¿µÄÖµ[2]¡£¡£¡£¡£¡£¡£ÔÚsolidity˵»°ÖУ¬£¬£¬£¬£¬£¬£¬È«¾Ö±äÁ¿¶¼´æ´¢ÔÚstorageÖУ¬£¬£¬£¬£¬£¬£¬Æ¾¾ÝsolidityµÄ±äÁ¿´æ´¢¹æ¶¨£¬£¬£¬£¬£¬£¬£¬¶¨³¤µÄ±äÁ¿ÔÚstorageÖÐÊǰ¤´Î´æ´¢µÄ£¬£¬£¬£¬£¬£¬£¬Êý×é±äÁ¿ÔÚstorageÖÐÆäË÷ÒýµØÎ»´æ·ÅµÄÊÇÆäÊý×鳤¶È£¨°Ý¼û[3]£©¡£¡£¡£¡£¡£¡£¸ÃºÏÔ¼storageÖеıäÁ¿´æ´¢²¼¾ÖÈçÏ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


        ¶ÔÓÚÔÚ¹«Á´²¿ÊðµÄºÏÔ¼£¬£¬£¬£¬£¬£¬£¬¿Éͨ¹ýÒÔÌ«·»web3½Ó¿Úweb3.eth.getStorageAt(co ntractAddress, index)»ñȡij¸öºÏÔ¼Ö¸¶¨storageË÷ÒýµÄÊý¾Ý¡£¡£¡£¡£¡£¡£

        Òò¶ø£¬£¬£¬£¬£¬£¬£¬secrete²¢²»ÊÇÒ»¸ö²»³É»ñÈ¡µÄ˽º±¼û¾Ý£¬£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÖ»±ØÒª½Ó¼û¸ÃºÏÔ¼storageÖеÄÊý¾Ý¾ÍÄܹ»»ú¹Øconfiscate º¯ÊýµÄsecret == _secretǰÌá¡£¡£¡£¡£¡£¡£

2.2 solidityÈ«¾Ö±äÁ¿¸²¸Ç

        BelluminarBankºÏÔ¼ÖеÄconfiscateº¯ÊýÒªÇóŲÓÃÕß±ØÐëÊǺÏÔ¼Õ¼ÓÐÕßÄÜÁ¦¹»½øÐÐÓà¶îÌáÈ¡²Ù×÷£¬£¬£¬£¬£¬£¬£¬¿´ÉÏÈ¥¹¥»÷ÕßÊÇÎÞ·¨ÌáÈ¡µÄ¡£¡£¡£¡£¡£¡£È»¶ø£¬£¬£¬£¬£¬£¬£¬ÓÉÓÚsolidity˵»°µÄ²¿ÃűäÁ¿´æ´¢¸öÐÔ£¬£¬£¬£¬£¬£¬£¬µ¼Ö±¾ºÏÔ¼µÄowner±äÁ¿Äܹ»±»Åú¸Ä£¬£¬£¬£¬£¬£¬£¬¸²¸ÇÎÊÌâ³Ê´Ë¿Ì invest º¯ÊýÖС£¡£¡£¡£¡£¡£

        Ê×ÏÈÀ´¿´solidity²¿ÃűäÁ¿¸²¸ÇÈ«¾ÖstorageµÄÎÊÌâ¡£¡£¡£¡£¡£¡£solidity˵»°µÄ±äÁ¿´æ´¢ÓÐÒ»¸ö¸öÐÔ£¬£¬£¬£¬£¬£¬£¬¼´Êý×é¡¢Ó³Éä¡¢½á¹¹ÌåÀàÐ͵IJ¿ÃűäÁ¿Ä¬ÈÏÊÇÒýÓúÏÔ¼µÄstorage [4]£¬£¬£¬£¬£¬£¬£¬¶øÈ«¾Ö±äÁ¿Ä¬ÈÏ´æ´¢ÔÚstorageÖС£¡£¡£¡£¡£¡£Òò¶ø£¬£¬£¬£¬£¬£¬£¬ÈôÊÇÕâЩ²¿ÃűäÁ¿Î´±»³õʼ»¯£¬£¬£¬£¬£¬£¬£¬ÔòËüÃǽ«Ö±½ÓÖ¸Ïòstorage£¬£¬£¬£¬£¬£¬£¬Åú¸ÄÕâЩ±äÁ¿¾ÍÊÇÔÚÅú¸ÄÈ«¾Ö±äÁ¿¡£¡£¡£¡£¡£¡£

        ÒÔÈçϵĵ¥Ò»ºÏÔ¼testΪÀý£¬£¬£¬£¬£¬£¬£¬º¯Êýtest1Öнç˵ÁËÒ»¸ö²¿ÃŽṹÌå±äÁ¿x£¬£¬£¬£¬£¬£¬£¬µ«ÊÇûÓÐ¶ÔÆä½øÐгõʼ»¯¡£¡£¡£¡£¡£¡£Æ¾¾ÝsolidityµÄ±äÁ¿´æ´¢¹æ¶¨£¬£¬£¬£¬£¬£¬£¬Õâʱ³½xÊÇ´æ´¢ÔÚstorageÖе쬣¬£¬£¬£¬£¬£¬²¢ÇÒÊÇ´ÓË÷Òý0ÆðÍ·£¬£¬£¬£¬£¬£¬£¬ÄÇô¶ÔÆä³ÉÔ±±äÁ¿x,y¸³ÖµÖ®ºó£¬£¬£¬£¬£¬£¬£¬¸ÕºÃ¸²¸ÇÁËÈ«¾Ö±äÁ¿aºÍb¡£¡£¡£¡£¡£¡£ÓÐÐËÖÂÄܹ»ÔÚ remix ÖÐÔÚÏß¶Ô±¾ºÏÔ¼½øÐе÷ÊÔ¡£¡£¡£¡£¡£¡£

pragma solidity 0.4.24;

contract test {

    struct aa{

        uint x;

        uint y;

    }

    uint public a = 4;

    uint public b = 6;

    function test1() returns (uint){

        aa x;

        x.x = 9;

        x.y = 7;

    }

}

        ÔÚinvestº¯ÊýµÄelse·ÖÖ§ÖУ¬£¬£¬£¬£¬£¬£¬Ê¹ÓÃÁËÒ»¸ö²¿ÃŽṹ±äÁ¿investment¡£¡£¡£¡£¡£¡£¸Ã²¿ÃűäÁ¿ÔÚµ±Ç°Ö´ÐзÖÖ§Öв¢Ã»Óб»³õʼ»¯£¬£¬£¬£¬£¬£¬£¬Ä¬ÈÏÖ¸ÏòºÏÔ¼µÄstorage¡£¡£¡£¡£¡£¡£Ö´ÐÐÖжԸñäÁ¿µÄ³ÉÔ±¸³Öµ¾Í»áÖ±½Ó¸²¸ÇÈ«¾Ö±äÁ¿£¬£¬£¬£¬£¬£¬£¬¸²¸Ç¹ØÏµÎª£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ͬʱ£¬£¬£¬£¬£¬£¬£¬ÔÚ±äÁ¿¸²¸Ç֮ǰ±ØÐëÂú×ãÈçÏÂǰÌᣬ£¬£¬£¬£¬£¬£¬¼´´æ¿îÆÚÏÞÊÇ×îĩһ¸ö´æ¿î¼Í¼µÄÆÚÏÞºóÒ»Ä꣺deposit_term >= balances[balances.length - 1].deposit_term + 1 years¡£¡£¡£¡£¡£¡£ÓÉÓÚdeposit_termÊÇÓû§ÌṩµÄ£¬£¬£¬£¬£¬£¬£¬ÇáËɾÍÄܹ»Âú×ã¡£¡£¡£¡£¡£¡£

        ËùÒÔ£¬£¬£¬£¬£¬£¬£¬Í¨¹ý¾«ÐÄ»ú¹Øinvestº¯ÊýµÄ²ÎÊý¾ÍÄܹ»¸²¸ÇstroageÖеÄsender£¬£¬£¬£¬£¬£¬£¬´Ó¶øÅ¤×ª¸ÃºÏÔ¼µÄÕ¼ÓÐÕßΪ¹¥»÷Õߣ¬£¬£¬£¬£¬£¬£¬Í»ÆÆconfiscate º¯ÊýµÄmsg.sender == ownerÏÞ¶È¡£¡£¡£¡£¡£¡£

2.3 ÕûÊýÒç³ö

        ÔÚBelluminarBankºÏÔ¼Ô´ÂëµÄconfiscateº¯Êý»¹ÓÐÁí±íÒ»¸öÈçÏµĹ¦·òÏÞ¶È£¬£¬£¬£¬£¬£¬£¬¼´±ØÐëÔÚ´æ¿îÂúÒ»ÄêºóÄÜÁ¦ÌáÈ¡£¡£¡£¡£¡£¡£¬£¬£¬£¬£¬£¬£¬now >= balances[account].deposit_term + 1 years¡£¡£¡£¡£¡£¡£

        ÉÏÒ»½ÚÓÃÓÚÈ«¾Ö±äÁ¿¸²¸ÇµÄ´æ¿î²Ù×÷ʹµÃbalancesÖÐ×îĩһ¸ö´æ´¢¼Í¼µÄÆÚÏÞÒѾ­ÊÇ1Äêºó£¬£¬£¬£¬£¬£¬£¬¼´¹¥»÷ÕßÖÁÉÙÔÚ2ÄêºóÄÜÁ¦Å²ÓÃconfiscateº¯Êý½øÐÐÌá¿î¡£¡£¡£¡£¡£¡£Óë´Ëͬʱ£¬£¬£¬£¬£¬£¬£¬deposit_termÔÚ¸³Öµ¸ø²¿ÃűäÁ¿µÄʱ³½»á°ÑÈ«¾Ö±äÁ¿head¸²¸ÇΪ³¬´óµÄÊý£¬£¬£¬£¬£¬£¬£¬ÕâҲʹµÃºóÐøµÄfor (uint256 i = head; i <= account; i++)Ñ­»·´¦ÖÃÎÞ·¨ÌáȡȫÊýµÄ´æ¿î£¬£¬£¬£¬£¬£¬£¬ÓÉÓÚhead²»Îª0¡£¡£¡£¡£¡£¡£

        ÏÔÈ»£¬£¬£¬£¬£¬£¬£¬±ØÐë°Ñhead¸²¸ÇΪ0ÄÜÁ¦ÌáȡȫÊýµÄ´æ¿î£¬£¬£¬£¬£¬£¬£¬¼´investº¯ÊýµÄdeposit_term²ÎÊý±ØÐëΪ0¡£¡£¡£¡£¡£¡£µ«ÈôÊǸòÎÊýΪ0£¬£¬£¬£¬£¬£¬£¬ÓÖÎÞ·¨Âú×ãinvestº¯ÊýµÄÈ«¾Ö±äÁ¿¸²¸ÇÖ´ÐеÄǰÌádeposit_term >= balances[balances.length - 1].deposit_term + 1 years¡£¡£¡£¡£¡£¡£

        ×Ðϸ·ÖÎö¿É·¢ÏÖ£¬£¬£¬£¬£¬£¬£¬ÈôÊÇbalances[balances.length - 1].deposit_term+ 1 years¸ÕºÃµÅ×Ú0£¬£¬£¬£¬£¬£¬£¬ÔòÉÏÊöµÄǰÌáºãÎªÕæ¡£¡£¡£¡£¡£¡£ÏÔÈ»£¬£¬£¬£¬£¬£¬£¬balances[balances.length - 1].deposit_termÖ»ÓÐȡֵΪ(uint256_max ¨C 1 years + 1)£¬£¬£¬£¬£¬£¬£¬¾Í»áµ¼ÖÂÏà¼ÓºóµÄֵΪuint256_max+1¡£¡£¡£¡£¡£¡£Õâ¸öÁ˾ֻᳬ¹ýuint256µÄ±í°×¿Õ¼ä£¬£¬£¬£¬£¬£¬£¬²úÉúÒç³öµ¼ÖÂ×îºóµÄֵΪ0¡£¡£¡£¡£¡£¡£

        Òò¶ø£¬£¬£¬£¬£¬£¬£¬¹¥»÷ÕßÏÈ×öµÚÒ»´Î´æ¿î£¬£¬£¬£¬£¬£¬£¬°Ñbalances×îºóÒ»ÏîµÄdeposit_termÉèÖÃÎªÌØÊâÖµ£»£»£»£» £»£»£»¶øºó×öµÚ¶þ´Î´æ¿î£¬£¬£¬£¬£¬£¬£¬deposit_term´«Èë0Öµ£¬£¬£¬£¬£¬£¬£¬¾ÍÄÜ´¥·¢ÕûÊýÒç³ö£¬£¬£¬£¬£¬£¬£¬Èƹý±äÁ¿¸²¸ÇǰÌáÏ޶Ȳ¢Åú¸ÄheadΪ0Öµ¡£¡£¡£¡£¡£¡£

2.4 ¡°±äÁ¿¾À²ø¡±µÄ¸±×÷ÓÃ

        ÔÚÈ«¾Ö±äÁ¿¸²¸ÇÖУ¬£¬£¬£¬£¬£¬£¬ºÜÈÝÒײúÉú¡°±äÁ¿¾À²ø¡±¾°Ï󣬣¬£¬£¬£¬£¬£¬´Ó¶ø´¥·¢Ò»Ð©ÈÝÒ×±»ºöÊӵĸ±×÷Óᣡ£¡£¡£¡£¡£ÕâÀïÒÔÒ»¸öµ¥Ò»ºÏÔ¼testΪÀý£¬£¬£¬£¬£¬£¬£¬º¯ÊýtestArrayÖÐÒÀÈ»´æÔڽṹÌ岿ÃűäÁ¿a¸²¸ÇÈ«¾Ö±äÁ¿xµÄÇé¿ö¡£¡£¡£¡£¡£¡£µ«ÓÉÓÚxÊÇÊý×é±äÁ¿£¬£¬£¬£¬£¬£¬£¬ÆäÖ±½ÓË÷ÒýµÄstorage´æ´¢µØÎ»½ö´æ´¢ÆäÊý×鳤¶È£¬£¬£¬£¬£¬£¬£¬Ò²¾ÍÊÇa.xÖ»»á¸²¸ÇxµÄÊý¾Ý³¤¶È£¬£¬£¬£¬£¬£¬£¬¶øa.y½«¸²¸Ç±äÁ¿num¡£¡£¡£¡£¡£¡£

        ÔÚtestArrayº¯ÊýÖУ¬£¬£¬£¬£¬£¬£¬¸³Öµ²Ù×÷a.x = 5ʱ£¬£¬£¬£¬£¬£¬£¬ÓÉÓÚx.lengthÓë±äÁ¿a.x´¦ÓÚͳһ´æ´¢µØÎ»£¬£¬£¬£¬£¬£¬£¬¸³ÖµºóÊý×éxµÄ³¤¶ÈÔì³ÉÁË5¡£¡£¡£¡£¡£¡£½ÓÏÂÀ´£¬£¬£¬£¬£¬£¬£¬¸³Öµa.y£¬£¬£¬£¬£¬£¬£¬²¢½«±äÁ¿a²ÎÓëµ½Êý×éx¡£¡£¡£¡£¡£¡£ËùÒÔ±äÁ¿aÏÖʵÉϲÎÓëµ½ÁËÊý×éxË÷ÒýΪ5µÄµØÎ»¡£¡£¡£¡£¡£¡£ÈôÊǵ÷ÊÔtestArrayº¯ÊýÖ´ÐУ¬£¬£¬£¬£¬£¬£¬»á·¢´Ë¿Ìº¯ÊýÖ´ÐнáÊøÖ®ºó£¬£¬£¬£¬£¬£¬£¬x[5].x = 6, x[5].y = 7¡£¡£¡£¡£¡£¡£

        ÕâÊÇÎªÊ²Ã´ÄØ£¿£¿ £¿£¿£¿£¿£¿£¿Ã÷Ã÷´úÂëÖи³ÖµÐ´µÄÊÇ a.x = 5£¬£¬£¬£¬£¬£¬£¬a.y = 7¡£¡£¡£¡£¡£¡£Õâ¾ÍÊÇÈ«¾Ö±äÁ¿xºÍ²¿ÃűäÁ¿aÐγÉÁË¡°¾À²ø¡±£¬£¬£¬£¬£¬£¬£¬Ê×ÏÈÊDz¿ÃűäÁ¿aÅú¸Äµ¼ÖÂÈ«¾Ö±äÁ¿xŤת£¬£¬£¬£¬£¬£¬£¬¶øºóÊÇÈ«¾Ö±äÁ¿xÅú¸Äµ¼ÖÂÖÕ²¿ÃűäÁ¿Åú¸Ä£¬£¬£¬£¬£¬£¬£¬×îºó°ÑÅú¸ÄºóµÄ²¿ÃűäÁ¿ÓÖ´æ´¢µ½Åú¸ÄºóµÄÈ«¾Ö±äÁ¿¡£¡£¡£¡£¡£¡£ÕâÀï¼´ÊÇ£¬£¬£¬£¬£¬£¬£¬¸³Öµ²Ù×÷a.x = 5ʱ£¬£¬£¬£¬£¬£¬£¬°ÑÊý×éxµÄ³¤¶ÈÔì³ÉÁË5;  ½ÓÏÂÀ´x.push²Ù×÷£¬£¬£¬£¬£¬£¬£¬ÏÖʵÉÏÊÇÏȽ«¸ÃÊý×éxµÄ³¤¶È¼Ó1£¬£¬£¬£¬£¬£¬£¬´Ëʱa.x = 6; ×îºóÔÙ°Ña.x = 6, a.y=7²ÎÓëµ½x[5]¡£¡£¡£¡£¡£¡£ËùÒÔ£¬£¬£¬£¬£¬£¬£¬´æÈëÊý¾ÝµÄx¾ÍÊÇÐÂÊý×éµÄ³¤¶È6¡£¡£¡£¡£¡£¡£

pragma solidity 0.4.24;

contract test {

    struct aa{

        uint x;

        uint y;

    }

    aa [] x;

    uint public num = 4;

 
    function testArray() returns (uint){

        aa a;

        a.x = 5;

        a.y = 7;

        x.push(a);

    }

}

3 ·ì϶ÀûÓ÷½Ê½

        ÔÚµÚ2½ÚÖжԺÏÔ¼ BelluminarBank´æÔڵö·ì϶½øÐÐÁË·ÖÎö£¬£¬£¬£¬£¬£¬£¬ÏÂÃæ½«×¢Ã÷ÈôºÎÀûÓÃÕâ¸ö·ì϶ÌáÈ¡ºÏÔ¼µÄÈ«ÊýÓà¶î£¬£¬£¬£¬£¬£¬£¬ÕâÀïÔÚRemixÔÚÏß±àÒë»·¾³Öв¿Êð¸ÃºÏÔ¼£¬£¬£¬£¬£¬£¬£¬²¢ÑÝʾÆäÀûÓ÷½Ê½¡£¡£¡£¡£¡£¡£

        Ê×ÏȲ¿ÊðºÏÔ¼£¬£¬£¬£¬£¬£¬£¬ÔÚ²¿Êð²ÎÊýÖÐÉèÖÃsecrete Ϊ¡°0x01¡±£¬£¬£¬£¬£¬£¬£¬deposit_termΪ1000£¬£¬£¬£¬£¬£¬£¬msg.valueΪ 31337 wei¡£¡£¡£¡£¡£¡£

²¿ÊðºÏÔ¼ºó£¬£¬£¬£¬£¬£¬£¬ºÏÔ¼µÄÈ«¾Ö±äÁ¿ÈçÏÂͼËùʾ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ÕâÑù£¬£¬£¬£¬£¬£¬£¬ºÏԼĿǰµÄÓà¶îÊÇ 31337 wei£¬£¬£¬£¬£¬£¬£¬ºÏÔ¼Õ¼ÓÐÕߵĵØÖ·Îª£º0xca35b7d915458ef54 0ade6068dfe2f44e8fa733c¡£¡£¡£¡£¡£¡£

        ÏÂÃæÆðÍ·±ØÒª»ú¹ØÇ°ÌáʹµÃ¹¥»÷ÕßÄܹ»³É¹¦Å²ÓÃconfiscateº¯Êý¡£¡£¡£¡£¡£¡£

²½Öè1:  ¸²¸Çowner²¢»ú¹ØÕûÊýÒç³öǰÌá

        ÒªÏëת×ߺÏÔ¼Óà¶î£¬£¬£¬£¬£¬£¬£¬Ê×ÏȱØÐëÅú¸ÄºÏÔ¼µÄowner¡£¡£¡£¡£¡£¡£ÀûÓò¿ÃŽṹÌå investment Åú¸ÄºÏÔ¼owner£¬£¬£¬£¬£¬£¬£¬ÐèÂú×ãǰÌ᣺

        £¨1£©account < head or account >= balances.length

        £¨2£©deposit_term >= balances[balances.length ¨C 1].deposit_term + 1 years

        ÉèÖù¥»÷Õߣ¨0x1472¡­160C£©µÄinvestŲÓòÎÊýÈçÏ£º

        ? msg.value = 1 wei (ÓÉÓÚÔÚºÏÔ¼³õʼ»¯Ê±ownerÒѾ­´æÈëÒ»±Ê½ð¶î£¬£¬£¬£¬£¬£¬£¬ËùÒÔ´ËʱbalancesÊý×鳤¶ÈΪ1£¬£¬£¬£¬£¬£¬£¬ÎªÁ˲»Å¤×ªbalancesÊý×鳤¶È£¬£¬£¬£¬£¬£¬£¬ÕâÀïÒÀÈ»½«ÆäÉèÖÃΪ1 we i

        ? depositsit_term = 2^256 - 1 years = 115792089237316195423570985008687907853269984665640564039457584007913098103936 £¨ÔÚ²½Öè2ÖбØÒªÀûÓÃÕâ¸öÊýÖµ»ú¹ØÒç³ö£¬£¬£¬£¬£¬£¬£¬Í¬Ê¹Øâ¸öÖµÄܹ»Ê¹Ô´ÂëÖÐ require ǰÌáµÃµ½Âú×㣩

        ? account = 1 (Âú×ãǰÌá account >= balances.length)

        ŲÓÃÖ®ºó£¬£¬£¬£¬£¬£¬£¬ÐµĴæ¿î¼Í¼Êý¾Ý½«´æ·ÅÔÚbalancesÊý×éË÷ÒýΪ1µÄµØÎ»¡£¡£¡£¡£¡£¡£´ËʱµÄbalancesÊý×éÇé¿öºÍÈ«¾Östorage±äÁ¿Çé¿öÈçÏÂͼËùʾ¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        Äܹ»·¢ÏÖ£¬£¬£¬£¬£¬£¬£¬ownerÒѾ­Åú¸ÄΪ¹¥»÷ÕßµØÖ·£¬£¬£¬£¬£¬£¬£¬Í¬Ê±head±»´«ÈëµÄdeposit_term¸²¸ÇΪһ¸ö³¬´óÖµ¡£¡£¡£¡£¡£¡£

        ¶øÌáÈ¡Óà¶îÊÇ´ÓbalancesÊý×éÖÐheadË÷ÒýÆðÍ·µÄ´æ¿î¼Í¼ÆðÍ·ÍÆËãÊý¶îµÄ¡£¡£¡£¡£¡£¡£ÏÔÈ»£¬£¬£¬£¬£¬£¬£¬ÎªÁËÌáÈ¡µ½ºÏÔ¼ownerµÄÓà¶î£¬£¬£¬£¬£¬£¬£¬¼´balances[0]ÕË»§µÄÓà¶î£¬£¬£¬£¬£¬£¬£¬head±ØÐë±»¸²¸ÇΪ0¡£¡£¡£¡£¡£¡£Òò¶ø£¬£¬£¬£¬£¬£¬£¬±ØÒª½øÐеڶþ´Îstorage±äÁ¿¸²¸Ç£¬£¬£¬£¬£¬£¬£¬Åú¸Ähead¡£¡£¡£¡£¡£¡£

²½Öè2:  ¸´Ô­head²¢Èƹýdeposit_termÏÞ¶È

        ³ÖÐøÉèÖù¥»÷ÕßŲÓÃinvestµÄ²ÎÊý£º

        ? msg.value = 2wei (ͬÑù±£ÕÏbalancesµÄ³¤¶È¸²¸Çºó²»³öÏÖÃýÎó)

        ? deposit_term = 0: ¸´Ô­head

        ? account = 2 (Âú×ãǰÌá account >= balances.length ¼´¿É)

        ÓÉÓÚÔÚ²½Öè 1 ÖУ¬£¬£¬£¬£¬£¬£¬ÒѾ­½«balances[1].deposit_term ÉèÖÃΪ 2^256 -1 years£¬£¬£¬£¬£¬£¬£¬Òò¶øÔÚµÚ¶þ´ÎŲÓà invest º¯Êýʱ£¬£¬£¬£¬£¬£¬£¬ÓÉÓÚbalances[balances.length - 1].deposit_term + 1 years¡±Òç³öΪ0Âú×ãÁËrequireǰÌᣬ£¬£¬£¬£¬£¬£¬ËùÒÔÄܹ»³É¹¦½øÐеڶþ´Î¸²¸Ç¡£¡£¡£¡£¡£¡£

        ÕâÑù¼´Âú×ãÁËŲÓÃconfiscateº¯ÊýµÄǰÌámsg.sender == owner£¬£¬£¬£¬£¬£¬£¬Í¨¹ý¶ÁÈ¡storageºÜÈÝÒ×»ñµÃsecrete£¬£¬£¬£¬£¬£¬£¬Ç°Ìásecret == _secret Ò²Äܹ»Âú×㣬£¬£¬£¬£¬£¬£¬Í¬Ê±»¹³Áи²¸ÇÁËheadʹ֮±äΪ0 ¡£¡£¡£¡£¡£¡£

        ¸²¸ÇÖ®ºóÈ«¾Östorage±äÁ¿ºÍbalancesÊý×éÈçÏÂͼËùʾ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        Äܹ»·¢ÏÖheadÒѾ­Åú¸ÄΪ0ÁË¡£¡£¡£¡£¡£¡£

        ´Ë¿ÌÀ´¿´¿´µÚÈý¸öǰÌ᣺

        now >= balances[account].deposit_term + 1 years

        accountÊÇ´«ÈëµÄÊý¾Ý£¬£¬£¬£¬£¬£¬£¬Ä¿Ç°ºÏÔ¼ÖÐaccountÊýÁ¿Îª3¡£¡£¡£¡£¡£¡£ÔÚÇ°ÃæµÄinvestŲÓú󣬣¬£¬£¬£¬£¬£¬ balances[2].deposit_term = 0¡£¡£¡£¡£¡£¡£ ÏÔȻǰÌá now >= balances[2].deposit_term + 1 years ³ÉÁ¢£¬£¬£¬£¬£¬£¬£¬ËùÒÔÔÚ¸´Ô­headÊý¾ÝµÄͬʱ£¬£¬£¬£¬£¬£¬£¬Ò²ÈƹýÁËconfiscateº¯ÊýÖжÔÓÚ´æ¿îÆÚÏÞµÄÅж¨¡£¡£¡£¡£¡£¡£½ÓÏÂÀ´Ö»ÓÐŲÓú¯Êýconfiscateʱ£¬£¬£¬£¬£¬£¬£¬ÉèÖÃaccount Ϊ 2£¬£¬£¬£¬£¬£¬£¬±ã¿Éʹ¹¦·òÅжÏǰÌáÂú×㣬£¬£¬£¬£¬£¬£¬Í¬Ê±Ò²ÄÜÌáÈ¡ËùÓÐÕË»§µÄÓà¶î¡£¡£¡£¡£¡£¡£

²½Öè3:  Ôö³¤ºÏÔ¼Óà¶î

        ¾­¹ý²½Öè1ºÍ²½Öè2£¬£¬£¬£¬£¬£¬£¬Ëƺõ¹¥»÷ÕßÒѾ­Äܹ»Å²ÓÃconfiscateº¯ÊýÌáÈ¡ËùÓÐÓà¶îÁË£¬£¬£¬£¬£¬£¬£¬È»¶øÏÖʵÉÏÊDz»ÄܵÄ¡£¡£¡£¡£¡£¡£ÂòÂô»á²úÉú»Ø¹ö£¬£¬£¬£¬£¬£¬£¬ÕâÊÇÎªÊ²Ã´ÄØ£¿£¿ £¿£¿£¿£¿£¿£¿

        ×Ðϸ·ÖÎöÇ°ÃæµÄÊý¾Ý¾Í»á·¢ÏÖ£¬£¬£¬£¬£¬£¬£¬²½Öè1ÖÐmsg.valueΪ 1 wei£¬£¬£¬£¬£¬£¬£¬µ«ÊÇ×îºóbalancesÊý×éÖеÄbalances[1].amount È´Ôì³ÉÁË 2 wei¡£¡£¡£¡£¡£¡£ÕâÊÇÓÉÓÚ±äÁ¿¸²¸Ç¹ý³ÌÖвúÉúÁË¡°¾À²ø¡±¸±×÷Ó㬣¬£¬£¬£¬£¬£¬ÓÉÓÚmsg.value¸²¸ÇbalancesÊý×éµÄ³¤¶È£¬£¬£¬£¬£¬£¬£¬balances¸üÐÂǰÔö³¤ÁËÊý×鳤¶È£¬£¬£¬£¬£¬£¬£¬Êý×鳤¶Å×ÖŤתÁËmsg.value£¬£¬£¬£¬£¬£¬£¬×îºóµ¼Ö´æÈëµÄamountÔì³ÉÁËеÄÊý×鳤¶È£¬£¬£¬£¬£¬£¬£¬¼´2¡£¡£¡£¡£¡£¡£

        ËùÒÔ£¬£¬£¬£¬£¬£¬£¬Ã¿´ÎŲÓÃinvestº¯Êý½øÐбäÁ¿¸²¸Ç£¬£¬£¬£¬£¬£¬£¬´æ¿î¼Í¼µÄÕËÄ¿½ð¶î¶¼±ÈŲÓÃÕßÏÖʵ֧¸¶µÄmsg.value´ó¡£¡£¡£¡£¡£¡£ÏÂͼÊÇÁ½´ÎŲÓÃinvestÖ®ºóµÄbalancesÊý×éÇé¿ö¡£¡£¡£¡£¡£¡£

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ´ÓͼÖÐÄܹ»¿´³ö£¬£¬£¬£¬£¬£¬£¬´æ¿î¼Í¼ÖеÄÕËÃæÖµ»á±ÈÏÖʵÂòÂôµÄmsg.value¶à 1 wei¡£¡£¡£¡£¡£¡£Í¨¹ýconfiscateº¯ÊýÍÆËãµÃµ½µÄËùÓÐÕË»§×ܶîΪ31342 wei£¬£¬£¬£¬£¬£¬£¬¶øÏÖʵµÄºÏÔ¼ÕË»§×ÜÓà¶îΪ 31340 wei¡£¡£¡£¡£¡£¡£

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


        ΪÁË¿ÉÄܽ«ºÏÔ¼ÖÐËùÓÐÓà¶îÌáÈ¡³öÀ´£¬£¬£¬£¬£¬£¬£¬±ØÒªÔö³¤ºÏÔ¼µÄÕæÊµÓà¶î£¬£¬£¬£¬£¬£¬£¬Ê¹Æäͬ´æ¿î¼Í¼ÖеÄÓà¶îÏà³Æ¡£¡£¡£¡£¡£¡£È»¶ø£¬£¬£¬£¬£¬£¬£¬Í¨¹ýinvest·½Ê½Ôö³¤µÄÓà¶î³ÇÊб»¼ÆÈëÕËÃæÓà¶î£¬£¬£¬£¬£¬£¬£¬ÄÇôÔõôÔÚ²»Í¨¹ýinvestº¯ÊýµÄÇé¿öÏÂÔö³¤ºÏÔ¼µÄÕæÊµÓà¶îÄØ£¿£¿ £¿£¿£¿£¿£¿£¿

´ð°¸ÊÇselfdestructº¯Êý¡£¡£¡£¡£¡£¡£

        selfdestructº¯Êý»á½«¸ÃºÏÔ¼µÄÓà¶îתµ½Ö¸¶¨ÕË»§£¬£¬£¬£¬£¬£¬£¬¶øºó´ÓÇø¿éÁ´ÖÐÏú»Ù¸ÃºÏÔ¼µÄ´úÂëºÍstorage¡£¡£¡£¡£¡£¡£¸Ãº¯ÊýµÄ¹Ù·½Îĵµ×¢Ã÷[5]ÈçÏ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        Òò¶ø£¬£¬£¬£¬£¬£¬£¬Äܹ»»ú¹ØÒ»¸öºÏÔ¼£¬£¬£¬£¬£¬£¬£¬¶øºóÔÚºÏÔ¼ÖÐŲÓÃselfdestructº¯Êý½«ºÏÔ¼µÄÓà¶îת¸øBelluminarBankºÏÔ¼¡£¡£¡£¡£¡£¡£Îª´Ë£¬£¬£¬£¬£¬£¬£¬»ú¹ØÈçϺÏÔ¼£º

contract donar{

    function donar() public payable{

        selfdestruct(contractAddr);

    }

}

        ¸ÃºÏÔ¼´´½¨ºó¶ÙʱÏú»Ù£¬£¬£¬£¬£¬£¬£¬Í¬Ê±½«×Ô¼ºµÄÓà¶îת¸øÒøÐкÏÔ¼¡£¡£¡£¡£¡£¡£

        ÔÚ remix ÖÐ ±àÒë¸ÃºÏÔ¼£¬£¬£¬£¬£¬£¬£¬Í¬Ê±½« contractAddr´úÌæÎªÒøÐкÏÔ¼µØÖ·¡£¡£¡£¡£¡£¡£¶øºó ÔÚdeploy¸ÃºÏԼʱ£¬£¬£¬£¬£¬£¬£¬ÉèÖà msg.value Ϊ2 wei¡£¡£¡£¡£¡£¡£µ±ºÏÔ¼´´½¨ÓÖÏú»ÙÖ®ºó£¬£¬£¬£¬£¬£¬£¬ÆäÓà¶î£¨2wei£©½«×ª¸øÒøÐÐÕË»§£¬£¬£¬£¬£¬£¬£¬Ê¹ÒøÐкÏÔ¼µÄÕËÃæÓà¶îºÍÏÖʵÓà¶îÒ»Ö£¬£¬£¬£¬£¬£¬£¬ÕâÑùconfiscateº¯ÊýŲÓþͿÉÄÜÕýÈ·Ö´ÐС£¡£¡£¡£¡£¡£

        DonarºÏÔ¼²¿ÊðÉèÖÃÈçÏ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

        ºÏÔ¼²¿ÊðÍêÖ®ºó£¬£¬£¬£¬£¬£¬£¬BelluminarBank ºÏÔ¼Óà¶îÈçÏÂͼ£º

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

²½Öè4£ºÅ²ÓÃconfiscateÌáÈ¡ºÏÔ¼Óà¶î

        ¾­¹ýÉÏÃæµÄ²Ù×÷Ö®ºó£¬£¬£¬£¬£¬£¬£¬ÉèÖÃconfiscateº¯ÊýµÄ²ÎÊýΪ[2£¬£¬£¬£¬£¬£¬£¬¡°0x01¡±]¼´¿É½«ºÏÔ¼µÄÈ«ÊýÓà¶îת×ß¡£¡£¡£¡£¡£¡£
 

²Î¿¼Á´½Ó£º

¡¾1¡¿https://github.com/beched/ctf/tree/master/2018/wctf-belluminar

¡¾2¡¿https://solidity.readthedocs.io/en/v0.4.24/security-considerations.html#private-information-and-randomness

¡¾3¡¿https://medium.com/aigang-network/how-to-read-ethereum-contract-storage-44252c8af925

¡¾4¡¿ http://solidity.readthedocs.io/en/v0.4.24/frequently-asked-questions.html

¡¾5¡¿https://solidity.readthedocs.io/en/v0.4.24/introduction-to-smart-contracts.html?highlight=selfdestruct