▎ ºñÀÜƾ ¿À·ù Çã¿ë: Byzantine Fault Tolerance (BFT)
ºñÀÜƾ ¿À·ù Çã¿ëÀº ³ëµåÀÇ À¯È¿¼º ¿©ºÎ¿¡ ´ëÇÑ ºÒÈ®½ÇÇÑ Á¤º¸°¡ ÀÖÀ» ¶§ ºÐ»êÇü ÄÄÇ»ÅÍ ½Ã½ºÅÛÀÌ ³ëµå¿¡ »óÅ¿¡ ´ëÇØ °¡Áö´Â È®½Ç¼ºÀÇ Á¤µµ·Î Á¤Àǵȴ٠ÀÌ´õ¸®¿ò ÁöºÐ Áõ¸í(proof-of-stake)¿¡¼ BFT´Â ´Ù¸¥ ³ëµåµéÀÌ ÇÕÀÇ¿¡ À̸£°í »õ·Î¿î ºí·ÏÀ» »ý¼ºÇÏ°Ô Çϸ鼵µ “¾ÇÀÇÀûÀΔ ³ëµå°¡ ³×Æ®¿öÅ©¿¡¼ À߸øµÈ °÷¿¡ ÀÚ±ÝÀ» Àü¼ÛÇÏ°Ô ÇÏ´Â ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ´Â ÇàÀ§¿¡ ´ëÇØ ÀúÇ×ÇÏ´Â ³×Æ®¿öÅ©ÀÇ ´É·ÂÀ̴٠ij½ºÆÛ(Casper)ÀÇ °³¹ßÀº ÀÌ´õ¸®¿ò ÁöºÐ Áõ¸í BFT ·¹À̾î(layer)¸¦ ¾ó¸¶³ª Å©°Å³ª ÀÛ°Ô ¸¸µå³ÄÀÇ ¹®Á¦¿¡ ÁßÁ¡À» µÐ´Ù
ÀÛ¾÷ Áõ¸í(Proof-of-work) ÇÕÀÇ ¾Ë°í¸®ÁòÀº ä±¼ÀÚ¿¡°Ô ¾öû³ ¾çÀÇ Àü·Â°ú ÄÄÇ»ÅÍ ¿¬»ê·ÂÀ» ¿ä±¸Çؼ ÀÌÁß ÁöºÒÀ» ¹æÁöÇÏ´Â µ¿½Ã¿¡ “ºñÀÜƾ À屺 ¹®Á¦”·Î ºÒ¸®´Â nothing-at-stake ¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥À» Á¦½ÃÇÑ´Ù Casper´Â ÀÌ´õ¸®¿òÀÇ ÀÛ¾÷ Áõ¸í(PoW) ¾Ë°í¸®ÁòÀ» ´ëüÇÏ´Â ÁöºÐ Áõ¸í(PoS) ¾Ë°í¸®ÁòÀ¸·Î¼ ºñÀÜƾ À屺 ¹®Á¦¸¦ ÇØ°áÇϸ鼵µ ÈξÀ ÀûÀº ¾çÀÇ Àü±â¿Í Àåºñ¸¦ »ç¿ëÇؼ °Å·¡ÀÇ È®Á¤¼º(finality)À» Á¦°øÇÑ´Ù
▎ ºñÀÜƾ À屺 ¹®Á¦ (Byzantine Generals Problem)
“ºñÀÜƾ À屺 ¹®Á¦”¶õ ¿ë¾î´Â °¢ÀÚ ºÎ´ë¸¦ ÁöÀ§ÇÏ´Â ÇÑ ±×·ìÀÇ ºñÀÜƾ Á¦±¹ À屺µéÀÌ Ã³ÇÑ ÇϳªÀÇ °¡Á¤ÀûÀÎ »óȲÀ¸·ÎºÎÅÍ ³ª¿Â °ÍÀÌ´Ù ±×µéÀº ƯÁ¤ µµ½Ã¸¦ °ø°ÝÇÒÁöÀÇ ¿©ºÎ¸¦ °áÁ¤Çؾ߸¸ Çϴµ¥ À̶§, ºñÀÜƾ ±ºÀº ¸ðµç ºÎ´ë°¡ ´Ü°áÇؼ °ø°ÝÇÒ ¶§¿¡¸¸ ÀüÅõ¿¡¼ ÀÌ±æ ¼ö ÀÖ´Ù ÇÏÁö¸¸ À屺µé °£ÀÇ Àüº¸´Â ½Å·ÚÇÏÁö ¸øÇÒ ¼öµµ ÀÖ´Ù À屺µé°ú ±× ºÎ´ëµéÀÌ ¸ðµÎ µ¿½Ã¿¡ °ø°ÝÇÒ ¶§¿¡¸¸ µµ½ÃÀÇ ¸·°ÇÑ ±º´ë¸¦ ¹«Â ¼ö ÀÖ´Ù
°¢°¢ÀÇ À屺°ú ±×ÀÇ ºÎ´ë´Â Áö¸®ÀûÀ¸·Î ¼·Î ¸Ö¸® ¶³¾îÁ® ÀÖÀ¸¸ç Áß¾Ó ±Ç·ÂÀÌ ¾ø´Ù ±×¸®°í ±×µé¿¡°Ô °ø°ÝÀ» Áö½ÃÇÏ´Â ¸Þ½ÅÀú°¡ Àü´ÞÇÑ ´ÜÀÏ ¸Þ½ÃÁöÀÇ À¯È¿¼º¿¡ ¸ðµç À屺µéÀÌ µ¿ÀÇÇؾ߸¸ Çù°øÀÌ °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Ù ¸¸¾à ¾î¶² ¼öÀÇ À屺µéÀº ºÎ´ë°¡ ±× µµ½Ã¸¦ °ø°ÝÇϵµ·Ï ¸í·ÉÇÏ°í, ÇÑ À屺¸¸ÀÌ “³ª»Û” Àüº¸¸¦ ¹Þ¾Ò°Å³ª ±×°¡ ¹è½ÅÀÚÀ̱⠶§¹®¿¡ ÈÄÅð ¶Ç´Â °ø°ÝÀ» À¯º¸ÇÏ´Â ¸í·ÉÀ» ÇÑ´Ù¸é, Çù°øÀ» ÇÒ ¼ö ¾ø°Ô µÇ°í ±× °á°ú ºñÀÜƾ ±ºÀÇ °ø°ÝÀº ½ÇÆзΠ³¡³´Ù
ºñÀÜƾ ¿À·ù Çã¿ë
ÀÌ´õ¸®¿ò¿¡¼, ºñÀÜƾ À屺 ¹®Á¦´Â ij½ºÆÛ ÁöºÐ Áõ¸í(Casper PoS)À¸·Î ÇØ°áµÇ´Â ÇÕÀÇÀÇ ¹®Á¦ÀÌ´Ù ³ëµåµéÀº ÀáÀçÀûÀÎ ÀÌÁß ÁöºÒÀ» ¹æÁöÇϱâ À§Çؼ ºí·ÏüÀο¡ ¿Ã¹Ù¸¥ ºí·ÏÀÇ Ãß°¡¿Í °ü·ÃÇÑ ÇÕÀǸ¦ ¹Ýµå½Ã ÀÌ·ï¾ß¸¸ ÇÑ´Ù ÀÌ »óȲ¿¡¼ “ºñÀÜƾ ¿À·ù”(Byzantine Fault)¶õ ¿©·¯ ³ëµåµé¿¡°Ô ´Ù¸¥ ³×Æ®¿öÅ© ½ÅÈ£¸¦ º¸³»´Â ³ëµåÀÌ¸ç ±× °á°ú ÀϺΠ³ëµåµéÀÌ ºñ-ÇÁ·ÎÅäÄÝ ÇàÀ§¸¦ µû¸£°Ô µÈ´Ù ÀÌ´õ¸®¿ò ³×Æ®¿öÅ©ÀÇ “ºñÀÜƾ °íÀå”(Byzantine Failure)Àº ³×Æ®¿öÅ© ºÒ´ÉÀ¸·Î À̾îÁö´Âµ¥, ¾î¶² ³ëµå°¡ ¿©·¯ Âü¿©Àڵ鿡°Ô ´Ù¸¥ ½ÅÈ£¸¦ Á¦°øÇÏ´Â ºñÀÜƾ ¿À·ù(Byzantine fault) ¶§¹®ÀÌ´Ù ±×·¯¹Ç·Î µÑ ´Ù ¿À·ù·Î °£ÁÖÇؼ ÀÌ´õ¸®¿òÀÇ ¿À·ù-°¨Áö ½Ã½ºÅÛÀÌ ÀÛµ¿ÇÑ´Ù
▎ BFT-style proof-of-stake algorithmÀº ¾î¶»°Ô ÀÛµ¿Çϴ°¡?
BFT ¹æ½Ä ÁöºÐ Áõ¸íÀ» ´Þ¼ºÇϱâ À§Çؼ, ij½ºÆÛ´Â µÎ °¡Áö ±ÔÄ¢À» ¸í½ÃÇÑ´Ù
- È®Á¤¼º(finality) ±ÔÄ¢Àº Hash°¡ °áÁ¤µÈ °ÍÀ¸·Î °£ÁֵǴ ½Ã±â¸¦ °áÁ¤ÇÑ´Ù
- Slashing ±ÔÄ¢Àº ¾ÈÁ¤µÈ ÀÌ´õ¸®¿ò ÁÖ¼Ò·Î È®ÀÎµÈ ºí·Ï »ý¼ºÀÚ(validator) ³ëµå°¡ ¹®Á¦ µÉ ¼ÒÁö°¡ ÀÖ´Â ÇàÀ§(¿¹¸¦ µé¾î, µ¿½Ã¿¡ ´Ù¼öÀÇ °æÀï ºí·Ï¿¡ voting ÇÔ)¸¦ ÇÑ °ÍÀ¸·Î °£ÁÖµÉ ¶§, À§¹ÝÀÇ °á°ú ±× ³ëµåÀÇ ¿¹Ä¡±Ý »èÁ¦¸¦ °áÁ¤ÇÑ´Ù
Proof-of-work ¾Ë°í¸®Áò¿¡¼´Â ºí·Ï »ý¼ºÀÚ°¡ ÀûÇÕÇÑ ¸ñÇ¥ ÇؽÃÀÇ ³½º(nonce)¸¦ ã¾Æ¾ß ÇÑ´Ù ÀÌ°ÍÀº ¿¬»ê·Â ÁýÁßÀûÀÌ°í ½Ã°£ÀÌ ¸¹ÀÌ °É¸®Áö¸¸, °á°ú¸¦ Áõ¸íÇÏ´Â ÇÁ·Î¼¼½º´Â ¸Å¿ì ´Ü¼øÇϴ٠ij½ºÆÛ¿Í °°Àº BFT ¹æ½ÄÀÇ proof-of-stake ¾Ë°í¸®ÁòÀº ¿Ã¹Ù¸£°Ô ºí·Ï¿¡ “vote(ÅõÇ¥)”ÇÑ ³ëµåµé¿¡°Ô º¸»óÀ» ÇÏÁö¸¸, °á°ú¸¦ Áõ¸íÇÏ´Â °ÍÀº ¾î·Á¿î °úÁ¤À» °ÅÄ£´Ù ºí·Ï °ËÁõÀº ¿©·¯ ȸÂ÷ÀÇ ÅõÇ¥¸¦ ÅëÇØ ÀÌ·ç¾îÁö´Âµ¥, ¸ðµç ³ëµå´Â ¸Å ȸÂ÷¿¡ ÀϺΠƯÁ¤ ºí·Ï¿¡ ÅõÇ¥¸¦ Çà»çÇÑ´Ù Á¤Á÷ÇÏ°í ¿Â¶óÀÎ »óÅ¿¡ ÀÖ´Â ¸ðµç ³ëµåµéÀº ÁÖ¾îÁø ¾î¶² ºí·ÏÀÌ “Á¤±Ô”(üÀÎÀÇ ÀϺÎ)ÀÎÁöÀÇ ¿©ºÎ¸¦ ¿µ±¸ÀûÀ¸·Î ÇÕÀÇÇÑ´Ù
ºñÀÜƾ ¿À·ù°¡ ¹ß»ýÇÒ °¡´É¼ºÀ» °¡Áø ³×Æ®¿öÅ© »ó¿¡¼, ´Ù¸¥ ³ëµåµéÀÌ ¾î¶² ³ëµå¸¦ “bad”·Î ¼±¾ðÇÏ°í ±×°ÍÀ» ³×Æ®¿öÅ©¿¡¼ ¹èÁ¦ÇÏ´Â °ÍÀº ¾î·Á¿î ÀÏÀε¥, ¿ì¼± ¾î¶² ³ëµå°¡ ³ª»Û °ÍÀÎÁö¿¡ ´ëÇÑ ÇÕÀÇ°¡ ÀÌ·ç¾îÁ®¾ß Çϱ⠶§¹®ÀÌ´Ù ÀÌ´õ¸®¿ò ºí·Ï »ý¼ºÀÚ ³ëµåµéÀÌ ÁöÈÖ°üÀÌ°í, ±×µéÀÇ ³×Æ®¿öÅ© °í¸®°¡ ¸Þ½ÅÀú(Àü·É)À̶ó°í »ó»óÇغ¸ÀÚ ºñÀÜƾ ¿À·ù Çã¿ëÀº “¼±ÇÑ” ³ëµåµéÀÌ °ú¹Ý¼ö ÇÕÀÇ¿¡ À̸£¸é ´Þ¼ºµÇ¸ç, ¿©±â¼ ±âº» ¹«È¿ÅõÇ¥ °ª(default null vote value)ÀÌ ´©¶ôµÈ ¸Þ½ÃÁö¿Í ³ª»Û ³ëµå·ÎºÎÅÍÀÇ ¸Þ½ÃÁö¿¡ ÁÖ¾îÁø´Ù ±×¸®°í ¸¸¾à À¯È¿ÇÏÁö ¾ÊÀº (Null) ÅõÇ¥µéÀÌ °ú¹Ý¼öÀ̸é, ÇÕÀÇ ¾øÀ½(“ÈÄÅð”)À¸·Î »çÀü-Á¤ÀÇµÈ ±âº» Àü·«ÀÌ »ç¿ëµÈ´Ù
BFT´Â Àüü ³ëµåµéÀÌ ¾î¶² ³ëµå°¡ ¾ÇÀÇÀû(bad)ÀÎÁö ÇÕÀÇÇÒ ¼ö ¾øÀ» ¶§ ÇϳªÀÇ ¾ÇÀÇÀû ³ëµå¸¦ ¸·¾Æ³»Áö¸¸, ¿©±â¿¡¼ ÀÌ·¯ÇÑ ÇÕÀÇ´Â ³×Æ®¿öÅ©°¡ Áö¼ÓÀûÀ¸·Î ¿î¿ëµÉ ¼ö ÀÖµµ·Ï ¸¸µé¾îÁ®¾ß ÇÑ´Ù 50% ÀÌ»óÀÇ ¼±ÇÑ ³ëµåµé¿¡ ÀÇÇØ »ý¼ºµÈ Æ÷Å©(fork, ºÐ±â)´Â ³²¾ÆÀÖ´Â ÀáÀçÀûÀÎ ¾ÇÀÇÀû ³ëµåµé¿¡ ÀÇÇØ »ý¼ºµÈ ¾î¶² Æ÷Å©º¸´Ù ´õ ³ôÀº Á¡¼ö¸¦ ¾ò´Â´Ù ÇÏÁö¸¸ ³ëµåµéÀº 51% Âü¿©·Î »ý¼ºµÈ Æ÷Å©°¡ µÇµ¹·ÁÁöÁö ¾ÊÀ» °Å¶õ È®½ÅÀ» ÇÏÁö ¸øÇÑ´Ù ÀÌÀ¯´Â ¾ó¸¶³ª ¸¹Àº ³ëµå°¡ ºñÀÜƾÀÎÁö ¾Ë ¼ö ¾ø±â ¶§¹®ÀÌ´Ù µû¶ó¼, ij½ºÆÛ ³ëµåµéÀº ¾ÐµµÀûÀÎ ´Ù¼ö ³ëµåÀÇ Âü¿©°¡ ÀÖÀ» °æ¿ì¿¡¸¸ ºí·ÏÀÌ È®Á¤µÈ °ÍÀ¸·Î °£ÁÖÇÑ´Ù
ºñÀÜƾ ¿À·ù Çã¿ëÀº µ¿±â½Ä PoW ³×Æ®¿öÅ©¿¡¼ 50% ±×¸®°í ºÎºÐÀû µ¿±â½Ä ¶Ç´Â ºñµ¿±â½Ä PoS ³×Æ®¿öÅ©¿¡¼ 33%ÀÌ´Ù PoWÀÇ 50% ¿À·ù Çã¿ëÀº ³×Æ®¿öÅ© Áö¿¬ÀÌ Á¦·Î¶ó´Â °¡Á¤ÇÏ¿¡, ½ÇÁ¦ »óȲ¿¡¼ °üÂûµÇ±â·Î´Â ÀÌ´õ¸®¿òÀÇ ¿À·ù Çã¿ëÀÌ ¾à 46%ÀÌ°í ºñÆ®ÄÚÀÎÀº 49.5%ÀÌ´Ù PoS ³×Æ®¿öÅ© Áö¿¬ÀÌ ºí·Ï ½Ã°£°ú °°À» ¶§ ¿À·ù Çã¿ëÀº 33%±îÁö ³»·Á°£´Ù µû¶ó¼, ¾ÇÀÇÀûÀÎ ³ëµåÀÇ ¼ýÀÚ°¡ Àüü ³ëµåÀÇ 1/3°ú °°°Å³ª ³ÑÁö ¾ÊÀ¸¸é ÀÌ ¼Ö·ç¼ÇÀº Á¦´ë·Î ÀÛµ¿ÇÑ´Ù