O que são IDs Urbit e como eles funcionam?


Pré-requisitos: Para entender melhor este artigo, recomendamos que você tenha lido o conteúdo sobre o que é Urbit e o que são estrelas.

Uma ID Urbit é como uma conta na rede Urbit. Os planetas, as estrelas, os cometas e qualquer outra entidade na Urbit têm uma ID. Não é possível usar o Urbit sem uma ID Urbit.

Uma maneira muito comum de identificar um ID Urbit é com o @p.


O que é um @p em Urbit?

@p (pronuncia-se pat-pee) é um identificador permanente, por exemplo: ~zod, ou ~datsyr-radser. Seu @p é seu nome no Urbit e foi projetado para ser pronunciável. Ele geralmente funciona como um nome de usuário ou endereço de e-mail.

Um @p é o identificador exclusivo de uma nave e é usado em todo o Urbit, no código e nos aplicativos voltados para o usuário. Um @p não pode ser alterado. Ele sempre se referirá ao mesmo ID Urbit, e esse ID Urbit sempre terá o mesmo @p. No entanto, uma determinada ID pode mudar de proprietário, e você sempre pode comprar uma nova ID com um novo @p.

Cada @p é equivalente a um número ≥ 0 e > 256¹⁶, sendo que @ps mais longos fornecem números maiores. O comprimento de um @p indica de que classe de ID se trata.

As galáxias, por serem entidades maiores, têm @p curtos (por exemplo: ~zod e ~bus), enquanto os cometas, que são entidades menores, têm @p longos (por exemplo: ~racmus-mollen-fallyt-linpex-watres- sibbur-modlux-rinmex).


Como saber a classe de uma nave

É fácil saber a classe de uma nave observando seu @p.

  • Se tiver apenas um fonema, um sufixo, como ~zod ou ~bus, é uma galáxia.
  • Se tiver 2 fonemas, um prefixo e um sufixo, como ~marzod ou ~batbus, é uma estrela.
  • Se tiver 4 fonemas separados por um hífen, como ~datsyr-radser, é um planeta.
  • Se tiver 8 fonemas, como ~poster-hoster-midlev-mindyr, é uma lua.
  • Se tiver 4 fonemas separados por um caret, como ~midlev^mindyr, é uma lua abreviada @p. Os últimos 4 fonemas de uma lua @p indicam seu pai e são usados na abreviação.
  • Se tiver 16 fonemas, como ~dirbec-morfeb-ritlys-timsef-padnum-mapnep-nolfel-binzod, ou, mais provavelmente, 4 fonemas separados por um sublinhado, como ~dirbec_binzod, é um cometa.

O sufixo de uma estrela @p é sua galáxia-mãe, portanto, o pai de ~marzod é ~zod e o pai de ~batbus é ~bus.

Ao contrário das estrelas, os @ps de planeta não contêm o @p de seu pai – os nomes são embaralhados para dar a cada estrela uma boa variedade de @ps de planeta para gerar.

Você pode notar um hífen duplo no centro do @p completo do cometa. Isso faz parte da sintaxe exigida de um @p e facilita a leitura. A abreviação combina a primeira e a última “palavras” do @p com um sublinhado.


Como funcionam as combinações de prefixos e sufixos?

Um @p começa com um til (~) e é formado por fonemas/sílabas de três letras, uma combinação de prefixos e sufixos. Há 256 prefixos e 256 sufixos.

~zod e ~bus são galáxias, portanto, seus @ps completos são apenas um sufixo.

A maioria dos @ps é composta de “palavras” de 6 letras (um prefixo + um sufixo), unidas por hífens. Por exemplo, ~midlev-mindyr tem os prefixos mid e min e os sufixos lev e dyr. Você pode ver uma lista de prefixos e sufixos aqui.

Lembre-se de que um @p é, na verdade, apenas uma forma de escrever um número. Tecnicamente, um @p é um número de base 256, pois é composto de prefixos e sufixos, e há 256 de cada. É claro que você poderia escrever um número apenas com prefixos ou apenas sufixos, mas a leitura não seria tão interessante e não seria um @p válido.

Portanto, cada fonema é equivalente a um número, de 0 a 255. “doz” é a versão prefixada de 0, e “zod” é a versão sufixada de 0. Assim como normalmente não escrevemos zeros à esquerda em nossos números, omitimos o equivalente a zeros à esquerda na notação @p. É por isso que você nunca verá ~dozler ou ~dozzod-palnet. Seria mais ou menos como escrever 000218 ou 0000032591 (são apenas ~ler e ~palnet, respectivamente). No entanto, você pode encontrar ~dozler-palnet, pois os @ps do planeta nunca são reduzidos a três fonemas.

Um lugar em que você provavelmente verá isso é na lua @ps. Um @p lunar é uma ou duas “palavras” da escolha do pai, mais o @p do pai. Por exemplo, ~sampel-palnet poderia criar ~dister-sampel-palnet ou ~mister-master-sampel-palnet, entre outros.

Se uma galáxia ou uma estrela criar uma lua, seu @p deverá ser “preenchido” para compor os últimos 4 fonemas do @p da lua. Assim, ~ler poderia criar ~faster-dozzod-dozler ou ~poster-hoster-dozzod-dozler. Viu como doz e zod foram usados para aumentar o ler para 4 fonemas? Da mesma forma, ~palnet poderia criar ~walrus-dozzod-palnet ou ~doznec-tortul-dozzod-palnet.


Propriedades de um ID Urbit

Além do @p que já comentamos, um ID urbit também está diretamente associado a:

Chaves públicas e privadas: Elas permitem que você comprove criptograficamente a propriedade de um ID. Isso é um pouco como ter uma senha para uma conta ou assinar um documento. Todas as mensagens na Urbit são automaticamente assinadas e verificadas, para que você saiba que são autênticas.

Nave: Uma nave é um computador Urbit, que está sempre vinculado ao ID Urbit com o qual foi inicializado. Ao inicializar o Urbit pela primeira vez, você fornece suas chaves e chamamos essa inicialização de “nave”. Quando usa esse computador na rede, você está “pilotando” sua “nave”. Sua nave armazena todos os seus dados e aplicativos.


Azimuth Points

Um ponto Azimuth é um ID Urbit protegido no blockchain da Ethereum. Os pontos Azimuth são NFTs, regidos pelos contratos inteligentes Azimuth. Possuir um ponto Azimuth permite que você redefina suas chaves, gere novos IDs e transfira a propriedade para outra pessoa, entre outras coisas.

Quando a Ethereum se popularizou e as transações se tornaram muito caras, foi desenvolvida uma solução de camada 2 (comumente chamada de “L2”), que permite que os pontos Azimuth sejam gerados, transferidos etc. basicamente de graça.

Leia este artigo para entender melhor esse conceito: Urbit Azimuth.


Geração e patrocínio

Pensando nas possíveis combinações de sílabas, podemos prever todas as IDs de Urbit que possam existir. Mas galáxias, estrelas e planetas, sendo pontos do Azimuth, não passam a existir até que uma transação seja registrada no Azimuth, o que explicitamente “gera” esse ponto.

Todas as 256 galáxias já foram geradas. Essas galáxias podem gerar estrelas. Essas estrelas podem gerar planetas. Os planetas não podem gerar nada, mas todos os pontos do Azimuth podem criar luas, o que às vezes é chamado de “geração”, embora não seja feito por meio do Azimuth.

Por padrão, uma galáxia patrocinará todas as estrelas que gerar, e uma estrela patrocinará todos os planetas que gerar. Isso significa ajudar a rotear o tráfego de rede entre o afilhado e outras naves, fornecer atualizações de software OTA (over the air) e possivelmente fornecer outros serviços.

Um afilhado (estrela ou planeta) pode optar por deixar seu patrocinador e encontrar outro. Por outro lado, um patrocinador (galáxia ou estrela) pode optar por cancelar o patrocínio de seu afilhado ou patrocinar pontos adicionais que não foram gerados por ele. Isso permite que a hierarquia da rede se ajuste no caso de alguém se comportar mal.

Dica: para ter uma visão geral de quais estrelas e planetas já foram gerados, você pode instalar o aplicativo Astrolabe.


Por que @p é chamado de “patpee”?

Em Hoon, a linguagem de programação da Urbit, os números podem ter diferentes “auras”, dependendo do que representam. Algumas auras incluem @u para um número inteiro sem sinal, @t para texto arbitrário armazenado como um número, @if para um endereço IPv4 e, é claro, @p para escrever um número em fonemas.

Então, por que o “pat”? O Hoon envolve muito mais símbolos do que a maioria das linguagens de programação (por exemplo, .!=?|+:%^$;~- e assim por diante). Para ajudar os programadores a falar em voz alta sobre Hoon, cada símbolo está associado a um fonema de três letras. Nesse sistema, =/ é pronunciado “tisfas”, %- é “cenhep” e, você adivinhou, @ é “pat”.

Em suma, @p é originalmente um termo de programação, os programadores o pronunciam como “pat-pee”, então é assim que ele é pronunciado.


Créditos

Agradecimentos especiais ao desenvolvedor ~midlev-mindyr (Astrolabe) por fornecer conteúdo e revisar este material.


Próximos passos

Para continuar aprendendo sobre a Urbit, recomendamos que você verifique a organização deste curso gratuito e siga a ordem proposta.

Talvez você também se interesse por: