Em 1º de fevereiro, a Binance Web3 Wallet lançou oficialmente seu mercado de inscrições, com suporte a vários protocolos de inscrição, como BRC-20 e Ethscription. Há alguns dias, a OKX também anunciou seu suporte a protocolos de inscrição, como ARC-20, Runes, Doginals etc., o que despertou a atenção de todo o mercado para as inscrições. Durante a onda de inscrição, vários problemas de segurança surgem com frequência devido à complexidade e à novidade dos protocolos de inscrição. Isso não apenas ameaça a segurança dos ativos dos usuários, mas também tem um impacto negativo sobre o desenvolvimento saudável de todo o ecossistema do Inscription.
Em resposta a isso, a equipe de segurança da Beosin analisará os principais protocolos de inscrição para ajudar os usuários a entender a finalidade e a implementação dos protocolos de inscrição e como proteger os ativos de inscrição.
A chamada inscrição na blockchain é o registro de algumas informações específicas e significativas na blockchain por meio de determinadas características da blockchain. Depois que essas informações forem registradas no blockchain, elas serão armazenadas permanentemente no blockchain e dificilmente poderão ser adulteradas. As informações registradas na blockchain podem ser de vários tipos, como informações de texto simples, códigos complexos, imagens etc., que podem ser gravadas na blockchain. Dessa forma, podemos usar um conjunto de padrões para implementar as funções dos ativos digitais.
Desde o surgimento inicial das inscrições em Bitcoin, como o BRC-20, até a atual ecologia de inscrições, há uma infinidade de novos protocolos de inscrição e novos projetos surgindo quase todos os dias. Pode-se dizer que o desenvolvimento do Inscription está avançando aos trancos e barrancos. Várias cadeias públicas comuns também se juntaram ao ecossistema de inscrição, como o protocolo Ethscription na cadeia pública ETH, o protocolo ARC-20 na cadeia pública BTC, o BSC-20 e outros protocolos na cadeia pública BSC e o PRC- na cadeia pública Polygon. 20 etc. acordo .... Todos esses protocolos são gerados com a finalidade de publicar inscrições em suas cadeias públicas. No conteúdo a seguir, apresentaremos os métodos de implementação e os casos de uso de vários protocolos.
Vamos apresentar os protocolos que atualmente atraem muita atenção no mercado e comparar os pontos em comum e as diferenças entre os protocolos de inscrição de várias cadeias públicas.
Para explicar claramente o BRC-20, precisamos primeiro apresentar o UTXO e os ordinais.
O BTC usa o modelo UTXO, e as transações são transferidas em unidades UTXO. UTXO é a abreviação de Unspent Transaction Output (saída de transação não gasta), que significa saída de transação não gasta. O modelo UTXO é diferente do modelo de conta de cadeias públicas como a Ethereum, pois registra eventos de transação, mas não o status final. Para calcular quantos Bitcoins um usuário possui, é necessário somar todos os UTXOs de seu endereço, e o resultado é o número de moedas mantidas pelo usuário.
Ordinals é um protocolo sistemático para numerar Satoshis (sats), a menor unidade do Bitcoin. Ele pode atribuir um número exclusivo a cada Satoshi em cada UTXO (incluindo vários Satoshis). O Ordinals também suporta a função de gravar texto, imagens, áudio, vídeo etc. em satoshis, tornando cada satoshi único, semelhante ao conhecido token não fungível NFT da Ethereum, que chamamos de Bitcoin NFT.
O fundador do BRC-20 criou outro conceito baseado no protocolo Ordinals. Como o protocolo Ordinals pode criar NFTs de Bitcoin dando a cada Satoshi "atributos" diferentes, ele também pode criar FTs de Bitcoin dando um "formato" e "atributos" unificados, ou seja, tokens homogêneos.
O BRC-20 grava dados de texto em formato JSON unificado na Satoshi por meio do protocolo Ordinals. Esses dados de texto são o livro contábil dos tokens BRC-20. Com base nesses dados de texto, as participações e transferências de tokens podem ser analisadas. Inclui principalmente os seguintes conteúdos:
Esses são os três padrões do BRC-20. Entre eles, o campo op representa a operação que precisa ser realizada, incluindo deployment (implantação), mint (cunhagem) e transfer (transferência). O tique representa o nome do token que precisa ser executado. max representa a quantidade total de tokens emitidos, lim representa o número máximo de moedas cunhadas por token, amt representa o número de tokens que precisam ser operados. No padrão de transferência, há também campos como "to", mas isso não é necessário. A transferência é feita por A inscrição é enviada ao endereço de destino para implementar a alteração do saldo, conforme mostrado na figura abaixo:
Source:https://twitter.com/blockpunk2077/status/1725513817982136617
O ARC-20 ainda é o protocolo de inscrição na cadeia pública do Bitcoin. Assim como o protocolo BRC-20, ele é implementado pela gravação de dados padrão no UTXO, mas a diferença é que o protocolo ARC-20 não precisa especificar o ARC-20 nos dados. Em vez disso, o número de tokens ARC-20 é representado por sats (satoshi, a menor unidade de Bitcoin) no UTXO. A regra é 1 sat=1 token ARC-20.
O protocolo ARC-20, assim como o protocolo BRC-20, também é dividido em três etapas: implantação, cunhagem e transferência. Na fase de implantação, o nome do token padrão, a quantidade total de tokens, as restrições de lançamento e as informações do bloco precisam ser preenchidas no UTXO. Na etapa de cunhagem, o usuário precisa preencher o nome do token no UTXO, e o número de sats do UTXO é a quantidade de cunhagem do token ARC-20, e não é preenchido no UTXO junto com o nome do token; quando o usuário cunhar tokens ARC-20, eles poderão ser enviados para outros endereços. Ao enviar tokens, os usuários não precisam preencher nenhum dado no UTXO, mas transferir diretamente o UTXO que contém o token para outros endereços.
Source:https://twitter.com/blockpunk2077/status/1725513817982136617
Ao consultar tokens ARC-20, é necessário apenas um índice. O servidor de índice off-line pode ler as informações de registro do token e as transações de cunhagem e transferência. Não há necessidade de o servidor calcular a relação de transferência de fundos e consultar os tokens ARC-20 pertencentes ao endereço. A quantidade pode ser obtida por meio da leitura direta da quantidade sats do UTXO que contém o token.
Depois de entender o BRC-20 e o ARC-20, o senhor deve saber por que algumas pessoas transferem erroneamente ativos inscritos para outros endereços ou os "queimam".
Como os protocolos de inscrição do BTC, como o BRC-20 e o ARC-20, são baseados em transações UTXO, as transações de inscrição são, na verdade, anexadas às transações do BTC, e os usuários podem realizar operações comuns de transferência do BTC sem entender completamente a inscrição. Seu UTXO atual é fundido e dividido com outros UTXOs e, em seguida, enviado para endereços não intencionais, fazendo com que os ativos inscritos sejam mal transferidos ou "queimados", causando perdas irreversíveis.
Ethscription é um protocolo para criar e compartilhar dados na Ethereum. Algumas inscrições usam esse protocolo para substituir contratos inteligentes para implementar a emissão de tokens. O uso de inscrições pode reduzir os custos do usuário a níveis extremamente baixos.
Quando a Ethereum envia uma transação, ela fornece um bloco de dados calldata. Em geral, esse bloco de dados será deixado em branco para transferências ETH comuns. Se um contrato inteligente for chamado, o bloco de dados será designado como a assinatura da função de chamada e os dados de cada parâmetro. O protocolo Ethscription usa o bloco de dados calldata para adicionar alguns dados padrão para dar significado relevante ao enviar transferências ETH comuns.
Como o Ethscription especifica esses dados padrão?
Em primeiro lugar, se o senhor quiser criar uma Ethscription cujo conteúdo seja dados de imagem, precisará converter a imagem (o tamanho da imagem é limitado a 96 KB) em um URI de dados codificados em Base64 no formato (data:image/png;base64,...); em seguida, converta o URI em uma cadeia hexadecimal; envie uma transação de transferência comum para o endereço de destino por meio da Ethereum e preencha a cadeia hexadecimal acima em calldata, conforme mostrado abaixo:
Dessa forma, o endereço 0xf1bf é o proprietário da Ethscription, e qualquer Ethscription criada posteriormente com os mesmos calldata será considerada inválida.
Se o senhor quiser transferir a Ethscription, precisará que o proprietário da Ethscription envie uma transferência normal para o endereço de recebimento e preencha o hash da transação que criou a Ethscription nos dados de chamada; então, o endereço de recebimento será o proprietário da Ethscription, conforme mostrado abaixo:
Para blockchains EVM como BSCChain, Ethereum, Polygon etc., há um método comum de inscrição chamado calldata. Esse método utiliza blocos de dados para armazenar dados de formato fixo. Diferentemente do armazenamento de dados de imagem mencionado acima, esse método envolve a gravação de dados de texto formatados padrão no calldata.
Na corrente BSC, as inscrições são gravadas em um formato semelhante ao formato de inscrição BRC20. Por exemplo, o formato de inscrição é: data:,{“p”:””,”op”:””,”tick”:””,”amt”:””}; em que o campo "p" representa o nome do protocolo, como bsc-20, bnbs-20, ltc-20, bep-20, drc-20, nrc-20, src-20 e assim por diante. O campo "op" representa a operação, geralmente "mint". O campo "tick" representa o nome do token e o campo "amt" representa a quantidade do token.
Tomando o token bnbs como exemplo, podemos ver que, desde que uma transferência comum seja enviada para o endereço de destino, o preenchimento de data:,{“p”:”bsc-20”,”op”:”mint” in the calldata ,”tick”:”bnbs”,”amt”:”1000”} conclui a operação de cunhagem do token bnbs, conforme mostrado abaixo. No momento, o endereço 0x22ef tem 1.000 tokens bnbs.
Em seguida, o senhor precisa transferir o token. Como acima, o senhor precisa enviar uma transferência normal para o endereço de recebimento e preencher o hash da transação que criou o token bnbs nos dados de chamada. Então, o endereço de recebimento terá o token bnbs, conforme mostrado abaixo:
É basicamente a mesma coisa na Ethereum, Polygon e outras cadeias, mas deve-se observar que o conteúdo da cadeia BSC acima não é a única situação em que as inscrições são criadas na cadeia evm. Pode haver diferenças nos campos de dados de texto preenchidos entre diferentes cadeias de evm ou diferentes protocolos. Também pode haver diferenças na forma como os tokens são transferidos. Mas para esse tipo de método, todos eles são implementados usando o atributo calldata na cadeia EVM, portanto, parecem ser semelhantes.
Neste artigo, discutimos os princípios de implementação de inscrições em várias cadeias. Em resumo, as inscrições introduzidas são todos processos que usam alguns recursos do sistema de cadeia pública para salvar informações off-line no blockchain de acordo com os padrões prescritos e, em seguida, identificá-las e exibi-las por meio de servidores off-line. Nenhuma das inscrições introduzidas usa contratos inteligentes. Os usuários podem reduzir uma grande quantidade de custos adicionais de transação ao participar. No entanto, os usuários precisam entender completamente a implementação do protocolo de inscrição para evitar transferências equivocadas ou queima acidental de inscrições, resultando em perdas de ativos.
Em 1º de fevereiro, a Binance Web3 Wallet lançou oficialmente seu mercado de inscrições, com suporte a vários protocolos de inscrição, como BRC-20 e Ethscription. Há alguns dias, a OKX também anunciou seu suporte a protocolos de inscrição, como ARC-20, Runes, Doginals etc., o que despertou a atenção de todo o mercado para as inscrições. Durante a onda de inscrição, vários problemas de segurança surgem com frequência devido à complexidade e à novidade dos protocolos de inscrição. Isso não apenas ameaça a segurança dos ativos dos usuários, mas também tem um impacto negativo sobre o desenvolvimento saudável de todo o ecossistema do Inscription.
Em resposta a isso, a equipe de segurança da Beosin analisará os principais protocolos de inscrição para ajudar os usuários a entender a finalidade e a implementação dos protocolos de inscrição e como proteger os ativos de inscrição.
A chamada inscrição na blockchain é o registro de algumas informações específicas e significativas na blockchain por meio de determinadas características da blockchain. Depois que essas informações forem registradas no blockchain, elas serão armazenadas permanentemente no blockchain e dificilmente poderão ser adulteradas. As informações registradas na blockchain podem ser de vários tipos, como informações de texto simples, códigos complexos, imagens etc., que podem ser gravadas na blockchain. Dessa forma, podemos usar um conjunto de padrões para implementar as funções dos ativos digitais.
Desde o surgimento inicial das inscrições em Bitcoin, como o BRC-20, até a atual ecologia de inscrições, há uma infinidade de novos protocolos de inscrição e novos projetos surgindo quase todos os dias. Pode-se dizer que o desenvolvimento do Inscription está avançando aos trancos e barrancos. Várias cadeias públicas comuns também se juntaram ao ecossistema de inscrição, como o protocolo Ethscription na cadeia pública ETH, o protocolo ARC-20 na cadeia pública BTC, o BSC-20 e outros protocolos na cadeia pública BSC e o PRC- na cadeia pública Polygon. 20 etc. acordo .... Todos esses protocolos são gerados com a finalidade de publicar inscrições em suas cadeias públicas. No conteúdo a seguir, apresentaremos os métodos de implementação e os casos de uso de vários protocolos.
Vamos apresentar os protocolos que atualmente atraem muita atenção no mercado e comparar os pontos em comum e as diferenças entre os protocolos de inscrição de várias cadeias públicas.
Para explicar claramente o BRC-20, precisamos primeiro apresentar o UTXO e os ordinais.
O BTC usa o modelo UTXO, e as transações são transferidas em unidades UTXO. UTXO é a abreviação de Unspent Transaction Output (saída de transação não gasta), que significa saída de transação não gasta. O modelo UTXO é diferente do modelo de conta de cadeias públicas como a Ethereum, pois registra eventos de transação, mas não o status final. Para calcular quantos Bitcoins um usuário possui, é necessário somar todos os UTXOs de seu endereço, e o resultado é o número de moedas mantidas pelo usuário.
Ordinals é um protocolo sistemático para numerar Satoshis (sats), a menor unidade do Bitcoin. Ele pode atribuir um número exclusivo a cada Satoshi em cada UTXO (incluindo vários Satoshis). O Ordinals também suporta a função de gravar texto, imagens, áudio, vídeo etc. em satoshis, tornando cada satoshi único, semelhante ao conhecido token não fungível NFT da Ethereum, que chamamos de Bitcoin NFT.
O fundador do BRC-20 criou outro conceito baseado no protocolo Ordinals. Como o protocolo Ordinals pode criar NFTs de Bitcoin dando a cada Satoshi "atributos" diferentes, ele também pode criar FTs de Bitcoin dando um "formato" e "atributos" unificados, ou seja, tokens homogêneos.
O BRC-20 grava dados de texto em formato JSON unificado na Satoshi por meio do protocolo Ordinals. Esses dados de texto são o livro contábil dos tokens BRC-20. Com base nesses dados de texto, as participações e transferências de tokens podem ser analisadas. Inclui principalmente os seguintes conteúdos:
Esses são os três padrões do BRC-20. Entre eles, o campo op representa a operação que precisa ser realizada, incluindo deployment (implantação), mint (cunhagem) e transfer (transferência). O tique representa o nome do token que precisa ser executado. max representa a quantidade total de tokens emitidos, lim representa o número máximo de moedas cunhadas por token, amt representa o número de tokens que precisam ser operados. No padrão de transferência, há também campos como "to", mas isso não é necessário. A transferência é feita por A inscrição é enviada ao endereço de destino para implementar a alteração do saldo, conforme mostrado na figura abaixo:
Source:https://twitter.com/blockpunk2077/status/1725513817982136617
O ARC-20 ainda é o protocolo de inscrição na cadeia pública do Bitcoin. Assim como o protocolo BRC-20, ele é implementado pela gravação de dados padrão no UTXO, mas a diferença é que o protocolo ARC-20 não precisa especificar o ARC-20 nos dados. Em vez disso, o número de tokens ARC-20 é representado por sats (satoshi, a menor unidade de Bitcoin) no UTXO. A regra é 1 sat=1 token ARC-20.
O protocolo ARC-20, assim como o protocolo BRC-20, também é dividido em três etapas: implantação, cunhagem e transferência. Na fase de implantação, o nome do token padrão, a quantidade total de tokens, as restrições de lançamento e as informações do bloco precisam ser preenchidas no UTXO. Na etapa de cunhagem, o usuário precisa preencher o nome do token no UTXO, e o número de sats do UTXO é a quantidade de cunhagem do token ARC-20, e não é preenchido no UTXO junto com o nome do token; quando o usuário cunhar tokens ARC-20, eles poderão ser enviados para outros endereços. Ao enviar tokens, os usuários não precisam preencher nenhum dado no UTXO, mas transferir diretamente o UTXO que contém o token para outros endereços.
Source:https://twitter.com/blockpunk2077/status/1725513817982136617
Ao consultar tokens ARC-20, é necessário apenas um índice. O servidor de índice off-line pode ler as informações de registro do token e as transações de cunhagem e transferência. Não há necessidade de o servidor calcular a relação de transferência de fundos e consultar os tokens ARC-20 pertencentes ao endereço. A quantidade pode ser obtida por meio da leitura direta da quantidade sats do UTXO que contém o token.
Depois de entender o BRC-20 e o ARC-20, o senhor deve saber por que algumas pessoas transferem erroneamente ativos inscritos para outros endereços ou os "queimam".
Como os protocolos de inscrição do BTC, como o BRC-20 e o ARC-20, são baseados em transações UTXO, as transações de inscrição são, na verdade, anexadas às transações do BTC, e os usuários podem realizar operações comuns de transferência do BTC sem entender completamente a inscrição. Seu UTXO atual é fundido e dividido com outros UTXOs e, em seguida, enviado para endereços não intencionais, fazendo com que os ativos inscritos sejam mal transferidos ou "queimados", causando perdas irreversíveis.
Ethscription é um protocolo para criar e compartilhar dados na Ethereum. Algumas inscrições usam esse protocolo para substituir contratos inteligentes para implementar a emissão de tokens. O uso de inscrições pode reduzir os custos do usuário a níveis extremamente baixos.
Quando a Ethereum envia uma transação, ela fornece um bloco de dados calldata. Em geral, esse bloco de dados será deixado em branco para transferências ETH comuns. Se um contrato inteligente for chamado, o bloco de dados será designado como a assinatura da função de chamada e os dados de cada parâmetro. O protocolo Ethscription usa o bloco de dados calldata para adicionar alguns dados padrão para dar significado relevante ao enviar transferências ETH comuns.
Como o Ethscription especifica esses dados padrão?
Em primeiro lugar, se o senhor quiser criar uma Ethscription cujo conteúdo seja dados de imagem, precisará converter a imagem (o tamanho da imagem é limitado a 96 KB) em um URI de dados codificados em Base64 no formato (data:image/png;base64,...); em seguida, converta o URI em uma cadeia hexadecimal; envie uma transação de transferência comum para o endereço de destino por meio da Ethereum e preencha a cadeia hexadecimal acima em calldata, conforme mostrado abaixo:
Dessa forma, o endereço 0xf1bf é o proprietário da Ethscription, e qualquer Ethscription criada posteriormente com os mesmos calldata será considerada inválida.
Se o senhor quiser transferir a Ethscription, precisará que o proprietário da Ethscription envie uma transferência normal para o endereço de recebimento e preencha o hash da transação que criou a Ethscription nos dados de chamada; então, o endereço de recebimento será o proprietário da Ethscription, conforme mostrado abaixo:
Para blockchains EVM como BSCChain, Ethereum, Polygon etc., há um método comum de inscrição chamado calldata. Esse método utiliza blocos de dados para armazenar dados de formato fixo. Diferentemente do armazenamento de dados de imagem mencionado acima, esse método envolve a gravação de dados de texto formatados padrão no calldata.
Na corrente BSC, as inscrições são gravadas em um formato semelhante ao formato de inscrição BRC20. Por exemplo, o formato de inscrição é: data:,{“p”:””,”op”:””,”tick”:””,”amt”:””}; em que o campo "p" representa o nome do protocolo, como bsc-20, bnbs-20, ltc-20, bep-20, drc-20, nrc-20, src-20 e assim por diante. O campo "op" representa a operação, geralmente "mint". O campo "tick" representa o nome do token e o campo "amt" representa a quantidade do token.
Tomando o token bnbs como exemplo, podemos ver que, desde que uma transferência comum seja enviada para o endereço de destino, o preenchimento de data:,{“p”:”bsc-20”,”op”:”mint” in the calldata ,”tick”:”bnbs”,”amt”:”1000”} conclui a operação de cunhagem do token bnbs, conforme mostrado abaixo. No momento, o endereço 0x22ef tem 1.000 tokens bnbs.
Em seguida, o senhor precisa transferir o token. Como acima, o senhor precisa enviar uma transferência normal para o endereço de recebimento e preencher o hash da transação que criou o token bnbs nos dados de chamada. Então, o endereço de recebimento terá o token bnbs, conforme mostrado abaixo:
É basicamente a mesma coisa na Ethereum, Polygon e outras cadeias, mas deve-se observar que o conteúdo da cadeia BSC acima não é a única situação em que as inscrições são criadas na cadeia evm. Pode haver diferenças nos campos de dados de texto preenchidos entre diferentes cadeias de evm ou diferentes protocolos. Também pode haver diferenças na forma como os tokens são transferidos. Mas para esse tipo de método, todos eles são implementados usando o atributo calldata na cadeia EVM, portanto, parecem ser semelhantes.
Neste artigo, discutimos os princípios de implementação de inscrições em várias cadeias. Em resumo, as inscrições introduzidas são todos processos que usam alguns recursos do sistema de cadeia pública para salvar informações off-line no blockchain de acordo com os padrões prescritos e, em seguida, identificá-las e exibi-las por meio de servidores off-line. Nenhuma das inscrições introduzidas usa contratos inteligentes. Os usuários podem reduzir uma grande quantidade de custos adicionais de transação ao participar. No entanto, os usuários precisam entender completamente a implementação do protocolo de inscrição para evitar transferências equivocadas ou queima acidental de inscrições, resultando em perdas de ativos.