Multisig는 비트코인을 쓰려면 지정된 여러 키의 서명이 필요하도록 보호하는 방식입니다. 3개 중 2개 규칙이라면 서로 다른 세 키 중 아무 두 개면 됩니다. 따라서 하나를 잃어도 반드시 돈을 잃는 것은 아니며, 도둑이 키 하나만 가져가서는 지출할 수 없습니다. 적절한 백업과 실제로 분리된 키 관리가 전제입니다.
앨리스는 저축 전부를 한 기기에 의존하게 하고 싶지 않습니다. 그래서 독립된 키 A, B, C로 3개 중 2개가 필요한 지갑을 만듭니다. A + B, A + C 또는 B + C가 결제를 승인할 수 있습니다. 각 서명은 해당 개인 키로 만든, 수학적으로 검증 가능한 승인입니다. 개인 키 자체를 네트워크에 보내지는 않습니다. A를 잃어도 필요한 지갑 정보가 있다면 B와 C를 쓸 수 있습니다. A만 훔친 사람은 혼자 돈을 보낼 수 없습니다. 비트코인이 세 묶음으로 나뉘는 것도 아닙니다. 공동 규칙이 해당 자금 전체를 보호합니다. 세 사람이 키를 하나씩 가질 수도 있고, 한 사람이 서로 다른 기기로 관리할 수도 있습니다. 같은 Seed Phrase, 즉 같은 복구 단어를 세 부 복사한다고 독립된 세 키가 생기는 것은 아닙니다. [1] [2]
앨리스가 앱에 수취 주소와 금액을 입력하면 앱은 조정자 역할로 거래 초안을 만들어 서명 기기에 전달합니다. 이때 흔히 사용하는 PSBT는 결제 정보와 차례로 추가되는 서명을 주고받는 형식입니다. 기기를 동시에 연결하거나 같은 장소에 모을 필요가 없으며 개인 키도 분리된 상태로 유지됩니다. 서명하기 전에 앨리스는 사용하는 각 기기의 신뢰할 수 있는 화면에서 수취인, 금액, 수수료를 확인합니다. 기기는 검증된 지갑 규칙을 바탕으로 남은 금액을 앨리스에게 돌려주는 거스름돈 출력도 식별해야 합니다. 조작된 결제에 서명을 두 개 붙인다고 보호받는 것은 아닙니다. 조정자는 없는 서명을 만들어 낼 수는 없지만 잘못된 거래안을 제시할 수는 있습니다. 필요한 서명을 모아 거래를 완성한 뒤에야 앱이 네트워크에 전파합니다. [5]
독립된 키마다 안전한 개별 백업이 필요합니다. 하지만 지갑 전체를 복구하는 데 단어 묶음 두 개만 있으면 항상 충분한 것은 아닙니다. 필요한 서명 수, 세 키 모두의 공개 정보, 순서, 주소 생성 방식이라는 공동 설정도 알아야 합니다. 이는 지갑의 정확한 기술적 설명인 Output Descriptor나 동등한 설정 내보내기 파일로 보관할 수 있습니다. 개인 키가 없는 공개 디스크립터는 혼자 결제에 서명하지 못하지만 주소와 자금 흐름을 드러낼 수 있으므로 비공개로 보관해야 합니다. 앨리스는 먼저 소액으로 받기, 보내기, 복구를 시험합니다. 나중에 A를 잃거나 유출을 의심하더라도 앱에서 기기를 삭제하는 것만으로 기존 규칙이 바뀌지는 않습니다. 남은 키를 사용해 새 키 조합으로 만든, 새로 확인한 주소로 자금을 옮겨야 합니다. [4] [6]
3개 중 2개 규칙은 키 하나를 잃어도 되지만, 2개 중 2개 규칙은 어느 하나도 잃어서는 안 됩니다. 동시에 첫 번째 규칙에서는 어떤 두 키라도 지출할 수 있으므로 두 사람이 세 번째 사람을 배제하고 합의해도 가능합니다. 적절한 설정은 누구의 돈을 어떤 실패로부터 보호할 것인지에 달려 있습니다. 앨리스가 모든 기기와 백업을 같은 서랍에 두면 한 번의 도난이나 화재로 분리의 이점이 사라질 수 있습니다. 결제 확인, 지갑 호환성, 복구에도 더 많은 작업이 필요합니다. 여기서 지출 조건을 담는 것은 스크립트라는 짧은 프로그램입니다. 일반적인 스크립트 기반 다중 서명 거래는 비슷한 단일 서명 거래보다 보통 더 많은 공간을 차지하므로 같은 수수료율에서는 비용도 커집니다. 초보자에게는 이해하지 못하는 복잡한 설정보다 사용법을 잘 아는 단순한 지갑이 더 안전할 수 있습니다. [1] [2]
일반적인 m-of-n 표기는 지정된 n개 키 가운데 m개의 유효한 서명이 필요하다는 뜻입니다. 전통적인 스크립트 기반 Multisig에서는 공개 키와 이 기준값이 지출 조건에 포함됩니다. 거래 출력은 조건을 직접 지정하거나 해당 스크립트에 암호학적으로 연결됩니다. 지출할 때는 Bitcoin 규칙을 확인하는 컴퓨터인 노드가 필요한 서명과 스크립트 데이터를 검증합니다. 앱에서 승인하는 것만으로는 부족합니다. 디스크립터에서 multi는 주어진 공개 키 순서를 유지하고 sortedmulti는 정확히 정해진 규칙으로 정렬합니다. 키 파생 경로는 지갑이 출발점이 되는 키 정보에서 어떤 구체적인 키를 계산할지 정합니다. 잘못된 순서나 다른 키 파생 경로는 다른 주소를 만들 수 있습니다. 디스크립터는 지갑이 이 조건을 재구성하도록 돕는 정보이며, 그 자체가 설정 파일로 블록체인에 저장되는 것은 아닙니다. 여기서 설명한 것은 일반적인 스크립트 기반 Multisig입니다. 여러 참여자가 하나의 공동 서명을 만드는 다른 방식도 있으며 각각 별도의 규칙을 따릅니다. [3] [4] [7]
3개 중 2개 규칙
서로 다른 세 키를 쓰는 Multisig는 어느 두 키든 유효한 서명을 요구합니다. 키 하나만 훔쳐서는 부족합니다. 하나를 잃어도 필요한 스크립트 데이터가 있다면 나머지 두 키로 지출할 수 있습니다. 키와 백업을 분리하고 완전한 Output Descriptor 또는 동등한 지갑 정책을 보관하세요.
더 정확히 이해하려면 이 항목과 함께 다음도 읽어 보세요 Private Key, 지갑, PSBT. 다음 항목에서도 이 글을 참조합니다 HD Wallet, Cold Storage, Watch-only Wallet, Change Address.
01Multisig가 하나의 Hardware Wallet보다 자동으로 안전한가요?+
아닙니다. 올바르게 분리한 키와 백업은 단일 장애점을 줄일 수 있지만 참여자가 많으면 운영도 복잡해집니다. 검증한 지갑 정책과 시험한 복구 절차가 필요합니다. 공용 코디네이터가 침해되면 모두에게 같은 잘못된 결제를 제시할 수 있습니다.