Este artigo é apenas para compartilhamento técnico e não constitui qualquer conselho de investimento.

O BTC também terá seu próprio contrato inteligente?

No recente ecossistema Bitcoin, o Fractal BTC finalmente lançou a rede principal em setembro, após passar por várias redes de teste. Uma característica importante do Fractal é a capacidade de ter “contratos inteligentes”, e quase ao mesmo tempo que a rede principal foi lançada, um novo protocolo de token CAT 20 foi lançado. Que inteligência técnica o CAT 20 possui? O que podemos aprender?

Bitcoin fractal

Antes de entender o CAT 20, precisamos entender brevemente o Fractal Bitcoin. Seu relacionamento é exatamente como o ERC 20 e o ETH. O protocolo CAT 20 é implantado no Fractal Bitcoin.

Fractal Bitcoin, também conhecido como Fractal Bitcoin, é uma rede de “segunda camada” totalmente compatível com BTC. Comparado ao BTC, o tempo de confirmação do bloco é mais rápido, demorando apenas 1 minuto. Seu princípio básico é simplesmente como o próprio nome diz, que é fazer várias cópias da rede BTC. Cada cadeia processará transações. Quanto mais nós puderem processar transações, mais rápido será naturalmente. No entanto, os detalhes específicos, como a forma como as diferentes cadeias comunicam, ainda não estão claros e não existem documentos técnicos oficiais correspondentes para referência.

Se apenas uma transação em cadeia de segunda camada for mais rápida, parece não haver motivo para excitação. No entanto, a ativação do OP_CAT no Fractal, que foi abandonada pelo BTC há muito tempo por razões de segurança, elevou as capacidades do Fractal Bitcoin a um nível superior. Algumas pessoas dizem que o OP_CAT pode permitir que o BTC tenha capacidades de contrato inteligente. maneira, há espaço para a imaginação Mais.

Agora, alguém implementou um protocolo semelhante ao ERC 20 no Fractal Bitcoin.

Quanto ao motivo pelo qual o OP_CAT foi abandonado e por que ele pode ser usado no Fractal Bitcoin, podemos falar sobre isso mais tarde. Aqui nos concentraremos no CAT 20.

Protocolo CAT Consulte o white paper para obter o seguinte conteúdo: Introdução | Protocolo CAT (https://catprotocol.org/)

E repositório github: GitHub - CATProtocol/cat-token-box: Um monorepo para pacotes que implementam o protocolo CAT (https://github.com/CATProtocol/cat-token-box)

Com o suporte OP_CAT subjacente, um protocolo correspondente, o Protocolo CAT, estará disponível em breve. Atualmente, um protocolo que está realmente em execução é o protocolo CAT 20, e um painel correspondente foi adicionado no Unisat: https://explorer.unisat.io/fractal-mainnet/cat20.

Todos devem ser capazes de reagir ao ver o nome do CAT 20. Deve ser mais semelhante ao ERC 20. Comparado com o protocolo ERC 20 maduro, é muito conveniente para todos implantarem um Token. Como o CAT 20 implementa um ciclo de vida semelhante ao ERC 20?

Implantar

Antes da implantação, os usuários precisam especificar o endereço da carteira e as informações básicas sobre o token. As informações básicas sobre o token são semelhantes às do ERC 20:

Haverá algumas diferenças que o CAT 20 pode definir limites de pré-mineração e quantidade para cada Casa da Moeda. É claro que o ERC 20 também pode alcançar estas capacidades através de capacidades contratuais.

Durante a fase de implantação, serão iniciadas duas transações, que podem ser consideradas como duas fases: “commit” e “reveal”. Citando o diagrama oficial, as etapas de implantação são as seguintes:

Na etapa “commit”, as informações básicas do token serão escritas no script de saída da transação, como nome, símbolo, etc. O hashId da transação iniciada na fase de “commit” será utilizado como símbolo do token para distinguir outros tokens.

Você pode ver que o utxo desta transação " bc 1 pucq...ashx " corresponde ao commit. Depois, há duas transações restantes apontando para " bc 1 pszp...rehc 4 ". A primeira é usada para pagar a taxa de gás para a próxima etapa de "revelação" e a outra é o troco.

No estágio de “revelação”, você pode ver que existem duas entradas utxo, correspondendo às duas primeiras saídas do estágio de commit anterior. Esta transação irá primeiro gerar um OP_RETURN, no qual o Hash do estado inicial do CAT 20 será salvo. Em seguida, será gerado um Minter, que desempenhará um papel importante no processo Mint subsequente e será usado para manter as mudanças de estado do processo Mint.

Olhando para trás, para todo o processo de implantação, "confirmar" e "revelar" seguem as duas etapas de envio e revelação comumente usadas no blockchain. É uma forma relativamente comum de implantar projetos. etapas serão reveladas.

Como

Quando olhamos pela primeira vez para o Mint Token, a transação se parece com isto.

Como você pode ver na imagem acima, o processo do Mint possui as seguintes características.

  • A entrada do mint é um minter, que é gerado inicialmente durante a implantação.

  • Cada vez que o mint tem um e apenas um minter como entrada e qualquer número de minters como saída (um pouco problemático)

  • Cada casa da moeda tem apenas um token (um pouco problemático)

  • A ordem de saída é obrigatória, o minter deve ser seguido pelo token

Conhecendo o processo do Mint, podemos realmente encontrar algumas situações especiais que tornarão todo o processo do Mint interessante.

Por exemplo, minter, como saída da transação mint, pode ser 1, múltiplo ou até 0. Se o Mint for definido como 1 todas as vezes, o número de minters que podem ser usados ​​em toda a rede permanecerá inalterado (1), o que deixará o Mint lotado, e todos precisam pegar esse minter para evitar isso. Nesse caso, você precisa definir o número de minters produzidos a cada vez para maior que 1, para que, após a cunhagem, mais e mais minters possam ser usados.

No entanto, cada saída adicional da minter significa que você precisa pagar um utxo extra. Por razões econômicas, mais pessoas estarão dispostas a definir a minter como 0, o que inevitavelmente tornará a minter deflacionária, o que exige que algumas pessoas venham fazer uma doação e pagar o valor. minter extra voluntariamente.

Na versão V2, o padrão é gerar dois minters, e o status dos dois minters será o mais semelhante possível.

Estruturação de transações

Alguns amigos podem ter descoberto um problema, ou seja, por que o utxo do minter pode ser usado para construir transações? Para entender esse problema, é necessário analisar o código-fonte do “contrato”.

1、revelar utxo

Primeiro, analisamos a transação durante o processo de revelação e descobrimos que ela usa o commit de saída da transação anterior como entrada. Por que podemos pegar um utxo que não é o nosso endereço e construir a entrada da transação?

De acordo com o senso comum, uma chave privada corresponde a uma chave pública, e a chave pública deriva o endereço. Ao verificar se um utxo de entrada é válido, geralmente é determinado comparando se a assinatura é consistente com a transação original após ser descriptografada com a chave pública. Esta parte da lógica está escrita em script Bitcoin. Assim, podemos reescrever de forma inteligente a lógica do script. Os pares de chaves públicas e privadas escritos no script pertencem ao nosso próprio endereço, para que possamos controlar o utxo de dois endereços diferentes.

Olhando o código fonte podemos ver o que aconteceu:

Há outro problema aqui, ou seja, uma chave privada corresponde a uma chave pública, então por que o endereço de commit gerado é diferente do nosso endereço? Aqui você pode ver a partir do código fonte

Em outras palavras, nossa chave privada ajustará a chave pública de acordo com um ISSUE_PUBKEY, que também é uma característica do endereço P 2 TR.

2、minter uxo

Durante o processo de revelação, usamos utxo diferentes como entrada, mas na verdade a chave de criptografia é a mesma, que é a chave privada do implementador. Mas na fase minter todos podem usar esses utxo como entrada, como isso é feito?

Acho que esta parte é a capacidade do OP_CAT mencionada anteriormente, ou seja, a capacidade dos contratos inteligentes. Cada miner é um contrato inteligente. No entanto, o código-fonte desta parte não foi divulgado no momento e ainda não sabemos a implementação específica.

Status da transação (V2)

No minter, o estado também é preservado. Este estado existe em dois locais: um está no OP_RETURN da saída da transação e o outro é armazenado no contrato inteligente, que é o Minter e o Token mencionados acima.

O que é armazenado em OP_RETURN é o Hash do status de saída da transação atual, e os tempos Mint restantes do Token são armazenados no contrato. Após cada Casa da Moeda, o número de casas da moeda do Minter recém-gerado será igual ao número restante de casas da moeda dividido por dois. Representado por um diagrama:

No final do jogo, o número restante de todos os Minter é 0.

Voltando à imagem original, além do Minter ser um contrato inteligente, o Token gerado também é um contrato inteligente, que é o CAT 20. O CAT 20 possui dois estados básicos: quantidade e endereço do proprietário do Token. Você pode ver que, ao contrário do BRC 20 ou inscrição anterior, seu CAT 20 não está no UTXO do seu endereço.

Transferir

Ao transferir, o número de tokens de entrada e saída na transação precisa ser consistente. É claro que pode haver vários tokens diferentes na mesma transação, desde que os números de entrada e saída dos diferentes tokens sejam consistentes.

Queimar

Se quiser gravar o Token, você só precisa transferir o Token para um endereço normal.

Resumir

Percebe-se que todas as operações são construídas pelos próprios usuários, o que é muito flexível, portanto muita lógica de verificação precisa ser feita na parte do contrato. Algumas das vulnerabilidades expostas até agora também se devem a negligência na lógica de verificação.

Esse design pode trazer alguns benefícios:

  • Se você quiser saber o status de retenção de todos os Tokens, você só precisa verificar o utxo do token e não há necessidade de continuar pesquisando.

  • Se quiser verificar a situação atual do mint, você pode pesquisar transações com cat em OP_RETURN.

ZAN está aqui para obter água sem qualquer limite!

Dica: você pode receber 0,01 token testnet ETH gratuito a cada 24 horas para ajudá-lo a experimentar e testar projetos Web3 no ecossistema Ethereum. Clique para recebê-lo agora: https://zan.top/faucet?chInfo=ch_WZ.

Mais redes públicas serão suportadas em breve ~

Este artigo foi escrito por Yeezo (conta X @GaoYeezo 75065) da equipe ZAN (conta X @zan_team)