Short Channel ID
Componha e decomponha a referência compacta de um canal Lightning
Um Short Channel ID, ou SCID, ocupa 8 bytes e descreve onde encontrar uma funding output na blockchain: altura do bloco, posição da transação no bloco e índice da saída. A forma humana 700000x1337x0 e as formas decimal e hexadecimal abaixo representam exatamente os mesmos 64 bits.
A ferramenta apenas converte representações. Ela não consulta a blockchain e não prova que o valor corresponde a um canal real. Um SCID também pode ser um alias local, sem relação com uma saída on-chain.
Conteúdo
Ferramenta
Edite bloco, índice da transação e índice da saída para compor um SCID. No sentido inverso, cole somente um valor público ou fictício em formato humano, decimal ou hexadecimal. O cálculo roda localmente no navegador.
Short Channel ID
Fonte primária
A definição vem da BOLT 7. Ela especifica os campos de 3, 3 e 2 bytes, nessa ordem, e a escrita decimal separada pela letra minúscula x. A BOLT 4 usa o mesmo tipo no payload onion para indicar o canal de saída de um hop. A BOLT 2 define aliases enviados em channel_ready.
Anatomia dos 64 bits
| Campo | Tamanho | Exemplo | Significado |
|---|---|---|---|
| blockheight | 24 bits / 3 bytes | 700000 | Altura do bloco que contém a funding transaction. |
| txindex | 24 bits / 3 bytes | 1337 | Posição da funding transaction na lista de transações daquele bloco. |
| outputindex | 16 bits / 2 bytes | 0 | Índice da funding output dentro da transação, equivalente ao vout. |
SCID = blockheight x txindex x outputindex
SCID_uint64 =
(blockheight << 40)
| (txindex << 16)
| outputindex Os limites vêm do espaço reservado para cada campo: bloco e transação aceitam valores de 0 a 16.777.215; saída aceita de 0 a 65.535. O SCID inteiro aceita de 0 a 264 - 1.
Descrição longa do diagrama
Uma pilha representa a blockchain. O primeiro campo do SCID escolhe um bloco pela altura. Dentro desse bloco, o segundo campo escolhe uma transação pela posição na lista. Dentro da transação, o terceiro campo escolhe uma saída pelo índice. A saída destacada é a funding output do canal.
Exemplo trabalhado
Para 700000x1337x0, cada campo é preenchido com zeros à esquerda até ocupar seu tamanho fixo:
blockheight = 700000 = 0x0aae60 (3 bytes)
txindex = 1337 = 0x000539 (3 bytes)
outputindex = 0 = 0x0000 (2 bytes)
bytes = 0a ae 60 | 00 05 39 | 00 00
uint64 = 0x0aae600005390000
decimal = 769658139530821632 Esse txindex não é o txid. Ele é apenas a posição da transação na ordenação daquele bloco. Para chegar ao txid, é necessário obter o bloco correspondente e ler sua lista de transações.
Onde o SCID aparece
announcement_signatures: os dois peers trocam assinaturas antes de anunciar publicamente o canal.channel_announcement: liga dois node ids e duas chaves Bitcoin à funding output indicada pelo SCID.channel_update: associa fees, CLTV e limites de HTLC a uma direção do canal. A direção vem dechannel_flags, não do SCID.query_short_channel_idsereply_channel_range: sincronizam partes do grafo público por SCID.- Payload onion: um hop intermediário recebe o SCID do canal pelo qual deve encaminhar o HTLC. O hop final não recebe esse campo.
O SCID identifica o canal usado como referência; ele não contém fees, CLTV, capacidade disponível ou direção. Esses dados vêm do channel_update e do grafo de gossip, enquanto a liquidez remota continua privada e incerta para a busca de caminho.
Como verificar on-chain
Decompor o número é só o primeiro passo. Para validar um SCID público, um nó precisa:
- interpretar
chain_hashpara escolher a blockchain correta; - obter o bloco na altura indicada;
- selecionar a transação pelo índice dentro do bloco;
- selecionar a saída pelo vout indicado;
- verificar o script e as assinaturas exigidas pelo
channel_announcement; - confirmar que a saída ainda é um UTXO e tem profundidade suficiente.
Uma reorganização pode substituir o bloco naquela altura e invalidar a referência. Por isso a BOLT 7 exige confirmações antes do anúncio e define como podar canais cuja funding output foi gasta ou reorganizada para fora da cadeia.
SCID real, aliases e splices
Nem todo valor usado no campo short_channel_id aponta para a blockchain. Com option_scid_alias, um peer pode fornecer em channel_ready um alias não relacionado ao SCID real. Isso permite encaminhar por canais privados e por canais cuja funding transaction ainda não confirmou, sem expor necessariamente a posição on-chain.
O alias é válido no contexto dos peers que o negociaram; não deve ser tratado como coordenada pública de bloco, transação e saída. A ferramenta consegue decompor seus bits, mas os três números resultantes podem não ter significado on-chain.
Splicing cria outra distinção. Quando uma splice transaction substitui a funding output ativa, um novo channel_announcement pode usar o SCID da splice. Assim, o canal lógico pode continuar entre os mesmos nós enquanto sua referência on-chain muda.
Limites e armadilhas
- Confundir SCID com channel point. O channel point é normalmente
funding_txid:vout; o SCID usa altura, posição da transação e saída. - Confundir txindex com txid. Um é posição no bloco; o outro é o identificador hash da transação.
- Assumir que qualquer SCID representa canal público. O valor pode ser fictício, inválido ou um alias.
- Inferir liquidez. A funding output revela capacidade on-chain inicial, não a distribuição atual de saldo no canal.
- Ignorar direção. O mesmo SCID possui políticas distintas por sentido em
channel_update. - Tratar a referência como permanente. Reorganizações, fechamento e splicing alteram a validade ou a referência do canal.