Nervos是什么
Nervos是一个和比特币风格类似的智能合约平台,因为它
是POW挖矿而不是POS。
用的是UTXO模型而不是常见的账户模型。
极致的物理意义上的去中心化,在到处都是高性能链的今天它有着10秒的出块时间,可以在很久很久的电脑上跑全节点,只要两三天就能同步完上线4年的全部区块,如果用内置的轻节点只要半小时就能同步完。
从技术架构上它类似以太坊的分层架构
底层是L1(叫CKB,也是币的名字,对标ETH L1),采用基于Risc-v的虚拟机(risc zero)同款,相比WASM没那么流行,但也不是特别小众。
二层网络有EVM兼容的Rollup框架(Godwoken,对标Arbitrum One)或者侧链框架(Axon,对标Op Stack或者Arbitrum Orbit)。
我第一次听说Nervos是Coinbase的19年一篇考虑上币的文章,后面是Coinlist公募。当时Nervos和Solana,Avalanche,Near这些L1有差不多的融资规模,都是一亿左右,应该仅次于EOS,Filecoin,波卡的规模。
Nervos的一句话介绍就是Dragonfly还是谁说的:这是全中国最懂以太坊(就是最懂区块链)的团队,并且中国会诞生自己的国产的牛逼的L1。
站在19年看,这话没毛病,Nervos团队确实比之前的国产项目NEO那些靠谱不少,没有传销感,只有浓浓的技术风。
下图里都是那个周期的项目,怀念那个时代,更怀念不到1刀的SOL。
Nervos的特色
Nervos可能有很多特色,常说的有基于状态租用的经济模型,POW,UTXO,Risc-V。但我觉得最大的特色是UTXO,和伴随它的Nervos L1上的合约是验证而不是计算。
用JS SDK的转账交易来举例。
Cosmos(以太坊, Solana这些账户模型的链同理)的交易是用户1发1个币给用户2.,链上算出来用户1和用户2在这笔交易后余额是多少(用户1余额-1,用户2余额+1)。
const receiver_address = 'osmo123';
const mk = new MnemonicKey();
const client = new LCDClient({
URL: 'https://lcd.osmosis.zone',
chainID: 'osmosis-1',
});
const wallet = client.wallet(mk);
onst sendMsg = new MsgSend(
wallet.key.accAddress('osmo'),
receiver_address,
{
uosmo: 1,
},
);
const tx = await wallet.createAndSignTx({
msgs: [sendMsg],
memo: 'transfer 1 uosmo',
chainID: 'osmosis-1',
});
const txResult = await client.tx.broadcast(tx, 'osmosis-1');
但是Nervos L1的交易是提供发之前和之后用户1和用户2的余额(不是全部余额,只是使用了的UTXO余额),然后链上只验证这笔交易前后用户1和用户2的总和不变,变了就说明花了不存在的钱,交易失败。所以Nervos交易在发之前就要算出结果。
const senderPrivateKey = "private_key_xxxxxx";
const testAccount = generateAccountFromPrivateKey(senderPrivateKey);
const receiverAddress = "ckb123";
const receiverLockScript =
convertAddressToLockScript(receiverAddress)
const onChainMemo = "transfer ckb";
const dataOccupiedCapacity = BigInt(CapacityUnit.Byte * onChainMemo.length);
const minimalCellCapacity = minimalScriptCapacity(senderAccount.lockScript) + 800000000n; // 8 CKB for Capacity field itself
const targetCellCapacity = minimalCellCapacity + dataOccupiedCapacity;
// collect the sender's live input cells with enough CKB capacity
const inputCells: Cell[] = await collectInputCells(senderAccount.lockScript, targetCellCapacity + minimalCellCapacity);
const collectedCapacity = inputCells.reduce((acc: bigint, cell: Cell) => {
return acc + BigInt(cell.cellOutput.capacity);
}, 0n);
let txSkeleton = lumosHelpers.TransactionSkeleton({
cellProvider: ckbIndexer
});
// 交易输入包括发送者的现有UTXO,以及依赖的UTXO
// 依赖的UTXO存有转账验证的合约,类似账户模型下的调的合约的地址。
txSkeleton = txSkeleton.update("inputs", (inputs) =>
inputs.push(...inputCells)
);
txSkeleton = txSkeleton.update("cellDeps", (cellDeps) =>
cellDeps.push({
outPoint: {
txHash: TESTNET_SCRIPTS.SECP256K1_BLAKE160.TX_HASH,
index: TESTNET_SCRIPTS.SECP256K1_BLAKE160.INDEX,
},
depType: TESTNET_SCRIPTS.SECP256K1_BLAKE160.DEP_TYPE,
}),
);
const targetCell: Cell = {
cellOutput: {
capacity: `0x${targetCellCapacity.toString(16)}`,
lock: receiverLockScript,
},
data: onChainMemoHex,
};
const changeCell: Cell = {
cellOutput: {
capacity: `0x${(collectedCapacity - targetCellCapacity).toString(16)}`,
lock: senderAccount.lockScript,
},
data: "0x",
};
// 交易输出包括了两个新的UTXO,分别是接受者的UTXO和发送者的找零
txSkeleton = txSkeleton.update("outputs", (outputs) =>
outputs.push(...[targetCell, changeCell]),
);
txSkeleton = addWitness(txSkeleton);
txSkeleton = await payFeeByFeeRate(
txSkeleton,
[senderAccount.address],
random(1000, 2000 /** max fee rate */),
);
const txSkel = prepareSigningEntries(txSkeleton);
const message = txSkel.get("signingEntries").get(0)?.message ?? "";
const sig = hd.key.signRecoverable(message, senderPrivateKey);
const signedTx = lumosHelpers.sealTransaction(txSkel, [sig]);
const client = new RPC("https://testnet.ckb.dev/rpc");
const txHash = await client.sendTransaction(signedTx);
这点和账户模型的开发思路非常不一样,包括合约设计和数据存储,以及配套的设施比如indexer,SDK。进而有自己独特的问题。最直观的后果就是在不撒钱或者没有财富效应的情况下,开发者很难进入Nervos生态,因为这套思路在别的链不通用。
这个特色当然也带了一些账户模型的没有的好处,就是更大的灵活性,
说的最多的例子就是同样硬件可能有更好的性能,因为验证的成本一定小于等于计算。这样Nervos可以更方便的支持一些复杂的签名,在别的链可能就因为gas太高支持不了。直观好处就是用户可以用别的链的钱包(EVM钱包,Solana钱包,比特币钱包)来操作Nervos账户。虽然我一直推重Solana和Terra那种我自己做强别人都来兼容我,但这确实是一个特色。
收资产的人不需要gas token,因为收资产的人可以用收到的UTXO里的CKB付手续费,相当于发的一方代付了手续费,这比账户模型下各种gas relayer方便的多。
基金会的2023报告
Godwoken在年中就转人维护模式。
Axon在年底也暂停了,目前在测试网实现了和Cosmos链用IBC通信,但总的来说没有到主网可以用的阶段。
轻节点上线,可以在Neuron(桌面钱包,内置全节点)里跑轻节点,这样只有半小时就能同步完。
一系列L1本身的优化。
新的合约框架,kuai,但好像也没有进入可以用阶段?
支持Secp256r1,结果是可以用passkey操作Nervos地址,可以用JoyID去感受。
JoyID上线,可以用passkey解锁的PWA钱包,支持Nervos和EVM,后面会支持比特币和Solana。
Omiga上线,Nervos上的铭文。
Nervos联创之一去做一个intent网络,khalani
Nervos核心团队之一开始做L1应用,Spore NFT,大概是Nervos上的ERC-721+OpenSea,然后利用Nervos上目那些特色比如接受者不需要手续费。
关键是怎么让大家赌起来?
Nervos作为比特币L2和新成立的Cell Studio
一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程。
最近一年比特币因为铭文打开了新的市场,从发币到发链,这是要把这两年公链的发展的故事在演一遍,Nervos因为和比特币结构类似,再加上支持比特币钱包,所以引来了新一波关注,大家仿佛在CKB上看到了新的机会,毕竟这是币安里少数能买了并且还算靠谱的比特币L2概念的项目了。今天是2024/2/4,CKB价格是0.0044,市值不到两亿。
相比以太坊的L1和L2,比特币生态里比特币L1和L2的关系更像Cosmos内不同链的关系,大家用一个钱包(cosmos里都用keplr,btc和ckb都用unisat或者joyid),有大家都认可的资产(cosmos里是ATOM/TIA,btc这边是btc),这样比特币L2的市值就会用L1来评价。
所以机会来了就要抓住,cell studio就是JoyId创始人,也是Nervos的老炮,亲自上马来干应用开的公司,由Nervos基金会支持。做比特币和Nervos的桥,以及在Nervos上交易比特币资产。
结语
Nervos一路走来有很多坎坷,但也算一直在前进,尤其是核心团队和几个死忠粉,从来没有放弃,如果最后成功了,希望他们都可以暴富。
暂时把资源集中到CKB本身和它的开发工具上,而不是EVM rollup或者侧链,应该是一个正确的方向,因为只有这样才能发挥自身的优势,追求EVM rollup/侧链有点用自己的短板去和别人长板去拼的感觉,毕竟你永远不可能靠走以太坊的路来挑战以太坊。
因为我平时Cosmos看的多,Terra是我觉得最好的新公链破局的例子,UST崩盘之前做到1000亿市值靠的就是雷霆的执行力和不计代价的增长。Terra在21年defi最火的时候亲自下场做defi(mirror),需要以太坊流动性就自己做桥,不管是不是多签,这种实用主义至上精神值得所有的生态学习。
Terra和Solana的故事告诉大家,归根结底,一个公链想发展起来,自身能做的最重要的就是两件事,虽然很多人会说拉盘,但是如果你自己不行,就算拉盘也有完的一天,自己行,不拉盘了也不怕,而且好多时候你也得证明你值得拉才有人拉。
对核心团队来说,优先做应用或者支持应用开发者,基建等到不得不做时候再做。
做符合潮流甚至是引领潮流的应用,赶紧上线,越快越好,只要有用户了什么问题都不是问题,也不要管用户是真的假的,来干嘛的,有用户就行。
我觉得现在大家想用的就是能赌的应用。
最后推荐两个app。
欢迎一起交流,英文推bbbbbbboc,中文推ibcbull。给各位提前拜年了,2024一起暴富。