Coinbase, MtGox 및 Blockchain의 대열에 합류한 비트코인 개발자 스테판 토마스와 제레미아스 칸가스는 신뢰할 필요 없이 사용할 수 있는 경량 비트코인 결제 프로세서를 출시했습니다. 지금까지 모든 결제 프로세서가 개별 주문을 추적하는 방법은 각 결제에 대해 고유한 주소를 생성하고, 수신한 결제를 상인에게 전달하는 것입니다. 이는 결제 프로세서를 사용하지 않고 단일 주소만 사용하는 경우의 주요 문제인, 결제를 받았을 때 누가 보냈는지 알 수 없는 문제를 방지하지만, 상인이 비트코인을 다시 돌려줄 프로세서를 신뢰해야 하는 신뢰 문제도 발생합니다. 일반적인 비즈니스 과정에서는 프로세서가 그렇게 할 유인이 있지만, 그렇지 않으면 상인은 즉시 프로세서를 포기하고 프로세서는 해당 상인의 수익을 영원히 잃게 됩니다. 실제로 상인의 수익은 종종 매끄럽게 흐르지 않습니다. 예를 들어, 버터플라이 랩스가 6월에 ASIC 채굴 컴퓨터의 사전 주문을 시작했을 때, 하루 만에 250,000달러를 받았습니다. 상인이 이렇게 큰 수익을 제3자에게 신뢰하는 것이 불편할 수 있다는 점을 쉽게 이해할 수 있습니다.
한 가지 해결책은 상인이 결제 프로세서가 사용할 수 있도록 자신이 제어하는 몇 백 개의 주소를 제공하는 것이지만, 이는 상인이 프로세서의 데이터베이스를 새로운 주소로 지속적으로 보충해야 함을 의미합니다. 한 번에 더 많은 주소를 제공하고 주소를 생성하여 지갑에 포함시키는 자동 스크립트를 배포할 수 있지만, 문제는 상인이 언젠가 프로세서의 주소 데이터베이스를 보충해야 하거나 초기 데이터베이스가 비현실적으로 커야 한다는 것입니다. 이러한 설정이 원활하게 작동하려면 상인이 유한한 데이터 양으로 결제 프로세서에 무한한 수의 주소를 동시에 제공해야 합니다. AcceptBit는 사실상 그렇게 합니다.
AcceptBit가 이러한 작업을 수행하는 방법을 설명하려면 비트코인의 타원 곡선 암호화의 수학적 특성에 대한 기본 지식이 필요합니다. 비트코인에서 거래에 서명하는 데 사용되는 개인 키는 대략 0과 2256 사이의 숫자입니다. 공개 키는 (x,y) 좌표를 가진 점으로, 대략 같은 범위에 있습니다. 타원 곡선 수학에는 두 점을 더하여 세 번째 점을 생성하는 “더하기” 연산이 있으며, 이 덧셈은 교환법칙과 결합법칙의 표준 수학적 속성을 만족합니다(즉, a+b = b+a 및 a+(b+c) = (a+b)+c). 따라서 점을 숫자로 “곱할” 수 있으며, 이는 반복적으로 자기 자신을 더하거나(또는 더 효율적으로는 두 배 더하기 알고리즘을 사용하여) 수행할 수 있으며, 이 곱셈 또한 결합적입니다. 타원 곡선 표준은 또한 특정 점(Gx,Gy)을 “기본 점”으로 정의하며, 이 값은 비트코인 소스 코드나 SEC2 사양에서 찾아볼 수 있습니다. 비트코인의 공개 키는 비트코인 주소가 파생되는 것으로, 기본 점에 개인 키를 곱한 것입니다. 주어진 공개 키에 해당하는 개인 키를 약 2128번의 연산 이하로 결정할 수 있는 방법은 알려져 있지 않으며(현재 컴퓨팅 파워로는 우주의 수명보다 길어짐), 이는 비트코인의 보안 기반의 일부입니다. 메시지를 “서명”하고 주어진 메시지에 대한 서명을 “검증”하는 연산이 존재하며, 서명에는 개인 키가 필요하고 검증에는 해당 공개 키가 필요합니다. 공개 키는 이름에서 알 수 있듯이 공개적이며, 따라서 전체 비트코인 네트워크는 주어진 주소의 소유자가 해당 주소에서 지출되는 거래에 서명했음을 서명을 검증하여 확인할 수 있습니다.
AcceptBit는 타원 곡선 수학이 허용하는 “곱셈” 연산을 활용합니다. 사용자는 자신만 알고 있는 루트 개인 키를 가져와 기본 점에 곱하여 루트 공개 키를 생성하고, 이를 AcceptBit에 제출합니다. AcceptBit는 루트 공개 키에 주어진 숫자를 곱하여 새로운 주소를 생성할 수 있으며, 이를 통해 개인 키를 생성하고 따라서 지출할 수 있습니다. AcceptBit는 다른 숫자로 키를 계속 곱하여 새로운 주소를 생성할 수 있으므로, 그들이 가진 주소의 수는 기본적으로 무한합니다. 그러나 AcceptBit는 생성한 주소를 감시할 수만 있으며, 그 주소에서 지출할 수는 없습니다. 이는 결제 프로세서 신뢰 문제를 해결합니다.
이는 새로운 아이디어가 아닙니다. 이 개념은 이미 인기 있는 비트코인 클라이언트인 Electrum에서 구현되었으며, BIP 0032 사양에 공식화되어 있습니다. 그러나 AcceptBit는 이를 활용하여 없이는 불가능한 작업을 수행하는 첫 번째 서비스입니다. 현재 이 사양에 대한 내장 지원이 포함된 유일한 지갑은 Electrum이며, 따라서 AcceptBit를 사용하려면 Electrum 지갑이 필요합니다.
AcceptBit에는 비즈니스 이름과 Electrum에서 가져온 루트 공개 키를 입력하는 간단한 양식이 있으며(
electrum get master_public_key
로 얻음), 즉시 송장 생성을 시작할 수 있습니다. 송장을 생성하는 양식은 간단하며, 통화 금액과 통화를 입력하고 “생성”을 클릭하면 됩니다. 그러면 결제할 주소와 스캔할 QR 코드가 포함된 결제 페이지가 표시되며, 거래 상태(미지급, 지급 또는 확인됨)를 보여줍니다. 메인 페이지에는 생성된 모든 송장의 목록도 표시되어 어떤 송장이 지급되었는지 확인할 수 있습니다.
그러나 서비스에는 여전히 부족한 몇 가지 기능이 있습니다. 주요 약점 중 하나는 결제 페이지의 자동 업데이트 부족입니다. 현재 송장이 지급되었는지 확인하려면 결제 페이지를 새로 고쳐야 합니다. 결제 확인을 위해 몇 초마다 결제를 확인하고 페이지를 자동으로 업데이트하는 스크립트를 포함하면 서비스가 훨씬 더 사용하기 쉬워질 것입니다. 또 다른 결점은 API의 부족입니다. 송장을 생성하는 유일한 방법은 주요 상인 페이지의 양식을 작성하는 것입니다. 자동으로 송장을 생성하는 편리한 방법은 없습니다. 물론 양식을 자동으로 작성하여 제한을 우회할 수 있지만, 이를 위한 명령줄 스크립트는 ”
wget –header ‘Cookie: csrftoken=0’ http://acceptbit.com/m/3psKTF6icX2GU9Beo1PPgb –post-data ‘csrfmiddlewaretoken=0¤cy_amount=0.1¤cy=USD’
“이며, 자신의 상인 페이지와 원하는 금액으로 대체해야 합니다. 그러나 이는 편리하지 않으며, 자동화된 스크립트에 적합한 송장 추적 방법도 없습니다. 따라서 AcceptBit를 사용하여 웹사이트에서 결제를 수락하는 것은 현재 어렵습니다.
AcceptBit가 이러한 부족한 기능을 구현하면, 기존의 제3자 상인 제공자를 신뢰할 의향이 있는 사람들에게도 경쟁력 있는 결제 수단이 될 수 있습니다. AcceptBit와 Blockchain은 사용하기 위해 어떤 종류의 계정도 필요하지 않은 유일한 두 제공자이며, 현재 Blockchain은 그 약점을 반영하고 있습니다. 비록 그 상인 시스템이 자동화된 스크립트를 위한 모범적인 인터페이스를 가지고 있지만, 운영자는 인간을 위한 상인 인터페이스를 개발할 필요성을 느끼지 못했습니다. Blockchain은 또 다른 약점인 프라이버시 부족도 가지고 있습니다. 그 상인 시스템은 비트코인을 보낼 특정 주소를 지정해야 하므로, 고객의 결제가 모두 한 곳에 모이게 됩니다. 반면 AcceptBit는 매 송장마다 새로운 주소를 생성할 수 있는 능력이 있어 이 문제를 해결합니다. AcceptBit의 모델은 이미 상인의 직접적인 통제 하에 있는 주소를 제공하므로, BitPay와 WalletBit의 제공 사항과 직접적으로 수익을 상인의 은행 계좌에 예치하는 것과는 일치하지 않지만, 단순히 사용하기 쉽고 최소한의 설정으로 번거로움 없는 솔루션을 원하는 상인에게는 AcceptBit가 최고의 선택이 될 잠재력이 확실히 있습니다.