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)
