Here's a brief
@THORChain 101, from someone who was deep in that codebase for 4 years.
THORChain has 95 active validators, which are organized into 5 different “asgard” vaults. Asgard vaults are simple EOAs that are operated by their validator membership (19 nodes per vault) via threshold signatures. Here’s the actual endpoints to hit to see the live membership/vaults:
nodes:
gateway.liquify.com/chain/th…
vaults:
gateway.liquify.com/chain/th…
THORChain “churns” every 3 days, some validators leave, some enter, new vaults are generated via keygen, and funds rotate from old to new.
A swap happens through 3 basic stages: Observation, Execution, and Outbound signing.
Observation
In order for a swap to happen on THORChain, a supermajority of ALL validators need to observe, sign, and agree on the inbound tx to one of the vaults. This means with today’s active set effectively 64/95 validators need to observe and sign off on the inbound. This inbound tx on ETH or BTC contains a memo instructing the network on what to do with it.
Execution
Once an inbound reaches consensus, the network begins executing the swap based on the instructions encoded in the memo. The memo contains the desired output asset, limit, and destination address. The swap occurs on THORChains AMM, and once complete, an outbound is scheduled to one of the 5 asgard vaults.
Outbound signing
The vault that is assigned to send the outbound goes through the keysign ceremony: each member validator signs the same onchain tx via TSS, and once a supermajority of that vault has signed the tx, it is broadcasted on chain (effectively a 13/19 threshold signature).
So, basically, 64/95 validators need to agree to process a transaction, need to agree on the execution/outbound, and 13/19 actually sign it out. If 32/95 validators refused to process an inbound it would be black-holed onto the vault EOA, the network would have no record of it, and nothing would happen with those funds without further intervention.