2월 1일, 코인의 Web3 지갑은 BRC-20, EVM 등 다양한 인스크립션 프로토콜을 지원하는 인스크립션 마켓플레이스를 공식 출시했습니다. 며칠 전 OKX도 ARC-20, 룬, 도기널 및 기타 인스크립션 프로토콜에 대한 지원을 발표하면서 인스크립션 시장 전체의 관심을 불러 일으켰습니다. 이러한 배경에서 인스크립션 프로토콜의 복잡성과 참신함으로 인해 다양한 보안 문제가 빈번하게 발생하고 있습니다. 이는 사용자 자산의 보안을 위협할 뿐만 아니라 전체 인스크립션 생태계의 건전한 발전에도 부정적인 영향을 미칩니다.
보신의 보안팀은 사용자들이 인스크립션 프로토콜의 용도와 구현 방식, 인스크립션 자산을 보호하는 방법에 대한 이해를 돕기 위해 주요 인스크립션 프로토콜을 살펴봤습니다.
인스크립션 소개
블록체인의 이른바 인스크립션은 구체적이고 의미 있는 정보의 기록입니다. 일단 정보가 블록체인에 기록되면 블록체인에 영구적으로 저장되어 위변조가 어렵습니다. 블록체인에 기록되는 정보는 단순한 문자 메시지, 복잡한 코드, 이미지 등 다양한 유형이 될 수 있으며, 이를 통해 일련의 표준을 사용하여 디지털 자산의 기능을 구현할 수 있습니다.
인스크립션 현황
BRC-20과 같은 비트코인 퍼블릭 체인 인스크립션의 초기 등장부터 인스크립션을 위한 새로운 프로토콜과 거의 매일 새로운 프로젝트가 등장하는 현재의 인스크립션 생태계에 이르기까지 인스크립션 생태계는 새로운 인스크립션과 신규 프로젝트가 폭발적으로 증가했습니다. 새로운 프로젝트가 등장하면서 비문 개발이 급증했다고 할 수 있습니다. 이더리움 퍼블릭 체인의 이더스크립션 프로토콜, 비트코인 퍼블릭 체인의 아크-20 프로토콜, BSC 퍼블릭 체인의 BSC-20 및 기타 프로토콜, 폴리곤 퍼블릭 체인의 PRC-20 및 기타 프로토콜 ....... 등 다양한 일반 퍼블릭 체인도 인스크립션 생태계에 합류했습니다. 이러한 프로토콜은 모두 퍼블릭 체인에 비문을 게시하기 위해 만들어졌으며, 다음 섹션에서는 다양한 프로토콜이 구현되는 방식과 사용 사례에 대해 설명하겠습니다.
비문 설명
현재 시장에서 많은 관심을 받고 있는 프로토콜을 소개하고, 이를 비교하여 각 퍼블릭 체인의 공통점과 차이점을 알아보도록 하겠습니다.
1. BRC-20
BRC-20에 대해 이야기하기 위해 먼저 UTXO와 오디널스에 대해 소개하겠습니다.
BTC는 미사용 트랜잭션 산출량을 의미하는 UTXO 단위로 트랜잭션이 전송되는 UTXO 모델을 사용합니다. UTXO 모델은 최종 상태를 기록하지 않고 트랜잭션 이벤트를 기록한다는 점에서 이더와 같은 퍼블릭 체인의 계정 모델과 다릅니다. 특정 사용자가 보유한 비트코인의 수를 계산하려면 해당 주소에 대한 모든 UTXO를 합산해야 하며, 그 결과는 해당 사용자가 보유한 코인 수입니다.
오디널스는 비트코인의 가장 작은 단위인 사토시(sats)에 번호를 매기는 체계적인 프로토콜로, 각 UTXO(여러 개의 사토시를 포함하는)의 각 사토시에 고유 번호를 할당합니다. 오디널스는 또한 텍스트, 이미지, 오디오, 비디오 등으로 사토시를 작성하는 기능을 지원하므로 각 사토시를 고유하게 만들 수 있으며, 이는 익숙한 이더리움의 비동일성 토큰인 NFT와 유사합니다.
그리고 BRC-20 창립자들은 오디널스 프로토콜을 기반으로 다른 아이디어를 생각해냈습니다. 오디널스 프로토콜은 각 사토시에게 서로 다른 '속성'을 부여하여 비트코인 대체 불가능한 토큰을 생성할 수 있기 때문에, 비트코인 대체 불가능한 토큰을 생성하는 데 사용할 수 있는 통일된 '형식'과 '속성'을 부여하여 비트코인 대체 불가능한 토큰을 생성할 수 있습니다. 즉, 균질화된 토큰을 생성할 수 있습니다."라고 설명했습니다.
BRC-20은 오디널스 프로토콜을 사용하여 균일한 JSON 형식의 텍스트 데이터를 사토시에 작성하며, 이는 BRC-20 토큰의 장부 역할을 하고 토큰 보유와 전송을 파싱합니다. 주요 내용은 다음과 같습니다:
위는 BRC-20의 세 가지 표준이며, 여기서 op 필드는 수행 할 작업을 나타내며 배포(배포), 민트 ( mint) 및 전송, tick은 작업을 수행해야 하는 토큰의 이름, max는 발행된 토큰의 총량, limit은 토큰당 발행된 최대 토큰 수, amt는 운영해야 하는 토큰의 수를 나타냅니다. 전송은 필수 사항이 아니며, 아래와 같이 해당 비문을 대상 주소로 전송하여 잔액 변경을 달성합니다:
< p style="text-align: 가운데;">link: https://twitter.com/blockpunk2077/status/1725513817982136617
2. ARC-20
ARC-20은 여전히 비트코인 퍼블릭 체인의 인스크립션 프로토콜이며, BRC-20 프로토콜과 마찬가지로 UTXO 내부에 표준화된 데이터를 작성하여 구현되지만, 차이점은 ARC-20 프로토콜은 데이터에 ARC-20 토큰의 수를 지정할 필요가 없고, 대신 1샛 = 1ARC-20 토큰이라는 규칙에 따라 해당 UTXO의 샛(비트코인의 가장 작은 단위인 사토시)을 사용하여 ARC-20 토큰의 수를 나타냅니다.
ARC-20 프로토콜도 BRC-20 프로토콜과 마찬가지로 배포, 발행, 전송의 3단계로 나뉘며, 배포 단계에서는 표준 토큰 이름, 총 토큰 수, 발행 한도, 블록 정보, 이미지 정보 등을 UTXO에 입력해야 하고, 발행 단계에서는 사용자가 토큰의 이름을 UTXO에 입력해야 하며, 이 UTXO의 sat 수가 ARC-20 토큰의 이 됩니다. UTXO의 시총 수는 토큰의 이름과 함께 UTXO에 있는 시총 수가 아니라 발행된 ARC-20 토큰의 수이며, 사용자가 ARC-20 토큰을 발행한 후 다른 주소로 토큰을 보낼 수 있으며, 사용자는 토큰을 보낼 때 UTXO에 데이터를 입력할 필요 없이 토큰이 들어있는 UTXO를 다른 주소로 직접 전송하면 됩니다.
link: https://twitter.com/blockpunk2077/status/1725513817982136617
ARC-20 토큰을 조회할 때 하나의 인덱스만 필요하며, 오프라인 인덱싱 서버에서 토큰 등록 정보를 읽을 수 있습니다. 발행 및 이체 거래뿐만 아니라 서버가 자금 이체 관계를 계산할 필요가 없으며, 쿼리 주소가 보유한 ARC-20 토큰의 수는 토큰을 보유한 UTXO의 시총을 직접 읽음으로써 얻을 수 있습니다.
BRC-20과 ARC-20에 대해 알아본 후, 왜 일부 비문 자산을 다른 주소로 실수로 전송하거나 "소각"하는지 그 이유를 알 수 있을 것입니다.
BRC-20 및 ARC-20과 같은 BTC 인스크립션 프로토콜은 UTXO 거래를 기반으로 하기 때문에 인스크립션 거래는 실제로 BTC 거래에 첨부되며, 사용자는 인스크립션에 대한 완전한 이해 없이 정상적인 BTC 전송을 수행하여 현재 보유하고 있는 UTXO 및 기타 UTXO 자산을 다른 주소로 전송할 수 있습니다. 비문 자산과 다른 UTXO가 융합 및 분할되어 의도하지 않은 주소로 전송되면 비문 자산의 방향이 잘못되거나 "소각"되어 돌이킬 수 없는 손상이 발생할 수 있습니다.
3. 이더스크립션
이더스크립션은 이더에서 데이터를 생성하고 공유하는 데 사용되는 프로토콜입니다. 이더스크립션은 이더에서 데이터를 생성하고 공유하기 위한 프로토콜이며, 일부 인스크립션은 이 프로토콜을 토큰 발행을 위한 스마트 컨트랙트의 대안으로 사용하여 사용자 비용을 매우 낮은 수준으로 낮추는 솔루션입니다.
이더리움은 트랜잭션을 전송할 때 콜데이터 블록을 제공하는데, 일반적인 이더리움 전송의 경우 일반적으로 비워두고 스마트 컨트랙트에 대한 호출인 경우 호출 함수의 서명과 각 파라미터의 데이터로 지정합니다. 이더스크립션 프로토콜은 콜데이터 블록을 사용하여 정상적인 이더리움 전송 시 의미를 부여하기 위해 몇 가지 표준 데이터를 추가합니다.
에스크립션은 이 표준 데이터를 어떻게 지정하나요?
먼저 이미지 데이터로 이더스크립션을 생성하려면 이미지(이미지 크기는 96KB로 제한됨)를 (data:image/png;base64,...) 형식의 Base64 인코딩된 데이터의 URI로 변환해야 합니다. 다음으로 해당 URI를 16진수 문자열로 변환하고, 이더를 통해 대상 주소로 일반 전송 트랜잭션을 전송한 후 다음과 같이 호출 데이터를 위의 16진수 문자열로 채웁니다.
이렇게 하면 0xf1bf 주소가 이더스크립션을 소유하게 되며, 나중에 동일한 콜데이터로 생성된 이더스크립션은 모두 유효하지 않은 것으로 간주됩니다.
에스크립션을 전송하려면 에스크립션 소유자가 수신 주소로 일반 전송을 보내고 콜데이터에 에스크립션을 생성한 트랜잭션의 해시를 입력해야 합니다.
4. EVM 블록체인을 위한 인스크립션
BSC 체인, 이더리움, 폴리곤 등과 같은 EVM 블록체인의 경우 일반적인 인스크립션 레코딩 방식이 있는데, 이는 콜데이터를 사용하는 것입니다. 데이터 블록을 사용하여 고정된 형식의 데이터를 저장하는 방식이며, 이는 표준 형식의 텍스트 데이터를 콜데이터에 기록하여 이미지 데이터를 저장하는 위 방식과는 다릅니다.
BSC 체인에 인스크립션을 기록할 때 인스크립션 형식은 BRC20 인스크립션 형식과 유사하며, 예를 들어 인스크립션 형식은 다음과 같습니다: data:,{"p":"_","op":"_","tick":"_","amt":"_"}, 여기서 p 필드는 프로토콜 이름을 나타냅니다. 프로토콜 이름(예: bsc-20, bnbs-20, ltc-20, bep-20, drc-20, nrc-20, src-20 등), op 필드는 연산(보통 "mint")을 나타내고, tick 필드는 토큰 이름을 나타내고, amt 필드는 토큰의 개수를 나타냅니다.
bnbs 토큰을 예로 들면, 대상 주소로 정상적인 전송이 이루어지면 호출 데이터를 데이터로 채우는 것을 볼 수 있습니다:,{"p": "bsc-20", "op": "mint", "tick": "bnbs", "amt" : "1000"}아래와 같이 bnbs 토큰 발행 작업이 완료되었습니다. 이 시점에서 0x22ef 주소에는 1000개의 bnbs 토큰이 있습니다.
다음 단계는 토큰을 전송하는 것으로, 위와 동일합니다. 수신 주소로 일반 전송을 보내고 호출 데이터에 bnbs 토큰을 생성한 트랜잭션의 해시를 입력하면 아래와 같이 수신 주소가 bnbs 토큰을 소유하게 됩니다.
이더리움, 폴리곤 및 기타 체인도 기본적으로 동일하지만 하지만 한 가지주의해야 할 점은 위의 BSC 체인의 내용이 evm 체인에 비문을 작성하는 유일한 경우가 아니며 다른 evm 체인 또는 다른 프로토콜 사이에 채워진 텍스트 데이터 필드입니다. 입력되는 텍스트 데이터 필드와 토큰이 전송되는 방식은 서로 다른 evm 체인 또는 서로 다른 프로토콜 간에 차이가 있을 수 있습니다. 그러나 이러한 유형의 접근 방식은 모두 EVM 체인에서 calldata 속성을 사용하여 이를 달성하며, 거의 동일하게 보입니다.
요약
이 글에서는 여러 체인에서 비문을 구현하는 원칙에 대해 논의했습니다. 요약하자면, 소개한 비문은 퍼블릭 체인 시스템의 일부 기능을 사용하여 정해진 표준에 따라 오프라인 정보를 블록체인에 저장하고 오프라인 서버를 통해 이를 식별하고 표시하는 과정입니다. 이번에 소개한 비문은 스마트 컨트랙트를 사용하지 않으며, 사용자는 참여 시 거래에 필요한 많은 추가 비용을 절감할 수 있지만, 비문을 잘못 전송하거나 잘못 소각하여 자산 손실이 발생하지 않도록 비문 프로토콜의 구현을 충분히 이해해야 합니다.