Binance Square

bip

7,531 次浏览
8 人讨论中
Anh_ba_Cong - COLE
·
--
比特币可能在几个小时内被黑客攻击?一位开发者发声警告并提出解决方案尽管大多数用户仍然信任比特币的“钢铁”安全性,但一个潜在的威胁正悄然逼近——量子计算机(quantum computers)。来自智利的比特币开发者Agustin Cruz正在努力行动,以防灾难发生。 量子计算机:比特币的潜在敌人 目前,比特币使用一种名为#ECDSA (椭圆曲线数字签名算法)的加密算法,以确保只有合法拥有者才能花费钱包中的BTC。

比特币可能在几个小时内被黑客攻击?一位开发者发声警告并提出解决方案

尽管大多数用户仍然信任比特币的“钢铁”安全性,但一个潜在的威胁正悄然逼近——量子计算机(quantum computers)。来自智利的比特币开发者Agustin Cruz正在努力行动,以防灾难发生。

量子计算机:比特币的潜在敌人

目前,比特币使用一种名为#ECDSA (椭圆曲线数字签名算法)的加密算法,以确保只有合法拥有者才能花费钱包中的BTC。
KITE: 代理支付的区块链 我一直在思考为机器构建金钱和身份意味着什么,而Kite感觉像是那些罕见的项目之一,它试图通过重新设计轨道而不是强迫代理适应以人为本的系统来直接应对这个问题,这就是我为什么要在一次连续的呼吸中写下这些——试图匹配一种代理流动的感觉,在这种流动中,身份、规则和价值一起移动而没有不必要的摩擦。$KITE 在其核心是一个#EVM 兼容的Layer-1,专为代理支付和自主#AI 行为者之间的实时协调而构建,这意味着他们在发明对机器(而不仅仅是人类)重要的新原语时考虑了与现有工具的兼容性,而这种设计选择让开发者能够重用他们所知道的东西,同时为代理提供他们实际需要的一流功能。他们建立了一个三层身份模型,我注意到在他们的文档和白皮书中反复出现,因为它解决了一个看似困难的问题:当人工智能需要独立行动但又在人的权威之下时,钱包并不足够好,因此Kite将根用户身份(人类或组织权威)、代理身份(一个可委托的、确定性的地址,代表自主行为者)和会话身份(一个用于特定短期任务的短暂密钥)分开,而这种分离改变了你对风险、委托和撤销的思考方式。在实际操作中,这意味着如果你正在构建一个订购杂货的代理,该代理可以拥有其自己的链上地址和与用户加密绑定的可编程支出规则,而不暴露用户的主要密钥,如果出现问题,你可以撤回会话密钥或更改代理权限,而不会破坏用户更广泛的链上身份——我告诉你,这种操作安全性是我们在人工服务中视为理所当然的,但直到现在我们在机器代理中还没有。这些创始人并没有止步于身份;他们在白皮书中解释了一个SPACE框架——稳定币原生结算、可编程约束、以代理为先的身份验证等等——因为当代理为#API 调用、计算或数据进行微交易时,单位经济必须有意义,而结算层需要可预测的、低于一美分的费用,这样微小且高频的支付才是可行的,而Kite选择优化稳定币结算和低延迟直接解决了这个问题。

KITE: 代理支付的区块链

我一直在思考为机器构建金钱和身份意味着什么,而Kite感觉像是那些罕见的项目之一,它试图通过重新设计轨道而不是强迫代理适应以人为本的系统来直接应对这个问题,这就是我为什么要在一次连续的呼吸中写下这些——试图匹配一种代理流动的感觉,在这种流动中,身份、规则和价值一起移动而没有不必要的摩擦。$KITE 在其核心是一个#EVM 兼容的Layer-1,专为代理支付和自主#AI 行为者之间的实时协调而构建,这意味着他们在发明对机器(而不仅仅是人类)重要的新原语时考虑了与现有工具的兼容性,而这种设计选择让开发者能够重用他们所知道的东西,同时为代理提供他们实际需要的一流功能。他们建立了一个三层身份模型,我注意到在他们的文档和白皮书中反复出现,因为它解决了一个看似困难的问题:当人工智能需要独立行动但又在人的权威之下时,钱包并不足够好,因此Kite将根用户身份(人类或组织权威)、代理身份(一个可委托的、确定性的地址,代表自主行为者)和会话身份(一个用于特定短期任务的短暂密钥)分开,而这种分离改变了你对风险、委托和撤销的思考方式。在实际操作中,这意味着如果你正在构建一个订购杂货的代理,该代理可以拥有其自己的链上地址和与用户加密绑定的可编程支出规则,而不暴露用户的主要密钥,如果出现问题,你可以撤回会话密钥或更改代理权限,而不会破坏用户更广泛的链上身份——我告诉你,这种操作安全性是我们在人工服务中视为理所当然的,但直到现在我们在机器代理中还没有。这些创始人并没有止步于身份;他们在白皮书中解释了一个SPACE框架——稳定币原生结算、可编程约束、以代理为先的身份验证等等——因为当代理为#API 调用、计算或数据进行微交易时,单位经济必须有意义,而结算层需要可预测的、低于一美分的费用,这样微小且高频的支付才是可行的,而Kite选择优化稳定币结算和低延迟直接解决了这个问题。
钱包(三)- BIP322.  派生规则 [BIP32] 我们通过BIP39生成了种子,这个种子我们称之为“主种子”,依据BIP32的派生规则,我们可以将“主种子”派生出“主私钥”,“主公钥”,“主链码”,这三个都被称为“密钥”。我们可以继续将“密钥”作为“子种子”派生出“子密钥”(“子私钥”,“子公钥”,“子链码”),以此类推可以无限产生后代,他们都是通过“主种子”衍生出来的,因此“主种子”也被称为“根”。“主私钥”,“主公钥”,“主链码”也被称为“主密钥”。只要我们备份了“助记词”,那就可以导出“根”->“主根”->”子根“等等。  可以看出,每个层次的“密钥”既可以作为直接使用的“私钥”和“公钥”,也可以仅仅作为派生出下一层“密钥”的根,具体如何安排那就要依据“BIP44”协议来决定了。换句话说,BIP32规定了做菜的方法,BIP44规定了做出来的菜是作为下一道菜的食材呢还是直接拿来吃呢。 1)  派生出“主密钥” 将固定字符串“Bitcoin seed”作为密钥“Key”,将“种子”作为数据“Data”输入给函数HMAC-SHA512(Key, Data)生成512位二进制数,取前面256位用以生成“主私钥”,后面256作为“主链码”。依据“主私钥”按照以前所说的公钥生成法生成“主公钥”。 图1,从“种子”出发派生出“主密钥” 2)  派生出“子密钥” 仍然使用HMAC-SHA512(Key, Data)函数来派生子密钥,但输入给函数的参数可能使用“主私钥“,也可能使用”主公钥“,这就有了区别。因为使用“主私钥”的话那就无法通过“普通派生”生成“子公钥”,所以我们把使用“主私钥”的派生方式称作“硬化派生“,而使用“主公钥”的方式称为“普通派生”。 引入一个索引常数index,且当index ≥ 2^31时,使用硬化派生,否则使用普通派生,在BIP32规则中,以下面两个伪函数进行了说明。  CKDpriv(父私钥, 父链码, index) CKDpub(父公钥, 父链码, index)  这两个伪函数都是通过HMAC-SHA512(Key, Data)函数来实现派生的。 Def CKDpriv(k_par, c_par, i):  if I >= 2³¹  data = 0x00 || ser256(k_par) || ser32(i) # 用于硬化派生 else  K_par = point(k_par)  data = serP(K_par) || ser32(i) # 用于普通派生 I = HMAC_SHA512(key = c_par, msg = data)I_L, I_R = I[:32], I[32:] //取左侧256位用作生成子私钥,右侧256位为子链码  k_i = (I_L + k_par) mod n #核心机制c_i = I_R return k_i, c_i  //输入的是“父私钥”和“链码”,得到的是“子私钥”和“子链码” -------------------------------------------------------------- Def CKDpub((K_par, c_par), i):  if i >= 2³¹ // 硬化派生不能用于 CKDpub  throw InvalidChildError  data = serP(K_par)||ser32(i)  I = HMAC-SHA512(Key = c_par, Data = data)  IL, IR = I[0:32], I[32:64]  K_i = point(IL) + K_par //椭圆曲线点加法,核心机制  c_i = IR return (K_i, c_i)  //输入的是“父公钥”和“链码”,得到的是“子公钥”和“子链码” 以上两个函数的功能就是: 硬化派生时: 派生出的“子私钥”依赖于“父私钥”,且无法通过“普通派生”生成“子公钥”,安全性更高 普通派生时: 通过“父私钥”和“父链码”可以得到“子私钥”“子公钥”(这里的“子私钥”和硬化派生出来的“子私钥”是不同的) 通过“父公钥”和“父链码”仅可以得到“子公钥” 这就可以公布“父公钥”和“父链码”,生成观察钱包,由于拿不到父私钥无法生成子私钥,也就不能操作账户了 图2,普通派生时,两个派生函数的区别 “链码”的功能就是确保两个函数生成一致的“子公钥”,并且支持生成“密钥树” 下面再次分开阐述,总结一下两种派生的逻辑思路 (1)  硬化派生 输入:父私钥(k_par),父链码(c_par),索引(i ≥ 2^31) 过程: 计算 I = HMAC-SHA512(c_par, k_par || index) I_L(前 256 位),用于计算子私钥 子私钥,k_i = (k_par + I_L) mod n(n 为椭圆曲线阶) I_R(后 256 位):子链码(c_i) 输出:子私钥(k_i),子链码(c_i) 特点:需要父私钥,无法从父公钥派生,安全性高 (2)  普通派生 输入:父公钥(K_par),父链码(c_par),索引(i < 2^31) 过程: 计算 I = HMAC-SHA512(c_par, K_par || index) I_L:子私钥,k_i = k_par + I_L (mod n) I_R:子链码(c_i) 子公钥:K_i = point(k_i)(点乘,secp256k1 曲线) 输出:子公钥(K_i),子链码(c_i)。 特点:可从父公钥派生,适合建立观察钱包 (3)  密钥树 主密钥为主根,子密钥通过索引逐级派生,形成树状结构 索引范围:0 到 2^32-1(0x00000000 到 0xFFFFFFFF) 硬化索引:2^31 到 2^32-1(0x80000000 到 0xFFFFFFFF) 非硬化索引:0 到 2^31-1(0x00000000 到 0x7FFFFFFF) #钱包 #Wallet #BIP

钱包(三)- BIP32

2.  派生规则 [BIP32]
我们通过BIP39生成了种子,这个种子我们称之为“主种子”,依据BIP32的派生规则,我们可以将“主种子”派生出“主私钥”,“主公钥”,“主链码”,这三个都被称为“密钥”。我们可以继续将“密钥”作为“子种子”派生出“子密钥”(“子私钥”,“子公钥”,“子链码”),以此类推可以无限产生后代,他们都是通过“主种子”衍生出来的,因此“主种子”也被称为“根”。“主私钥”,“主公钥”,“主链码”也被称为“主密钥”。只要我们备份了“助记词”,那就可以导出“根”->“主根”->”子根“等等。 
可以看出,每个层次的“密钥”既可以作为直接使用的“私钥”和“公钥”,也可以仅仅作为派生出下一层“密钥”的根,具体如何安排那就要依据“BIP44”协议来决定了。换句话说,BIP32规定了做菜的方法,BIP44规定了做出来的菜是作为下一道菜的食材呢还是直接拿来吃呢。
1)  派生出“主密钥”
将固定字符串“Bitcoin seed”作为密钥“Key”,将“种子”作为数据“Data”输入给函数HMAC-SHA512(Key, Data)生成512位二进制数,取前面256位用以生成“主私钥”,后面256作为“主链码”。依据“主私钥”按照以前所说的公钥生成法生成“主公钥”。

图1,从“种子”出发派生出“主密钥”
2)  派生出“子密钥”
仍然使用HMAC-SHA512(Key, Data)函数来派生子密钥,但输入给函数的参数可能使用“主私钥“,也可能使用”主公钥“,这就有了区别。因为使用“主私钥”的话那就无法通过“普通派生”生成“子公钥”,所以我们把使用“主私钥”的派生方式称作“硬化派生“,而使用“主公钥”的方式称为“普通派生”。
引入一个索引常数index,且当index ≥ 2^31时,使用硬化派生,否则使用普通派生,在BIP32规则中,以下面两个伪函数进行了说明。 
CKDpriv(父私钥, 父链码, index)
CKDpub(父公钥, 父链码, index) 
这两个伪函数都是通过HMAC-SHA512(Key, Data)函数来实现派生的。

Def CKDpriv(k_par, c_par, i): 

if I >= 2³¹ 
data = 0x00 || ser256(k_par) || ser32(i) # 用于硬化派生

else 
K_par = point(k_par) 
data = serP(K_par) || ser32(i) # 用于普通派生

I = HMAC_SHA512(key = c_par, msg = data)I_L, I_R = I[:32], I[32:]
//取左侧256位用作生成子私钥,右侧256位为子链码 

k_i = (I_L + k_par) mod n #核心机制c_i = I_R return k_i, c_i 
//输入的是“父私钥”和“链码”,得到的是“子私钥”和“子链码”
--------------------------------------------------------------
Def CKDpub((K_par, c_par), i): 
if i >= 2³¹ // 硬化派生不能用于 CKDpub 
throw InvalidChildError 

data = serP(K_par)||ser32(i) 
I = HMAC-SHA512(Key = c_par, Data = data) 
IL, IR = I[0:32], I[32:64] 

K_i = point(IL) + K_par //椭圆曲线点加法,核心机制 

c_i = IR return (K_i, c_i) 
//输入的是“父公钥”和“链码”,得到的是“子公钥”和“子链码”

以上两个函数的功能就是:
硬化派生时:
派生出的“子私钥”依赖于“父私钥”,且无法通过“普通派生”生成“子公钥”,安全性更高
普通派生时:
通过“父私钥”和“父链码”可以得到“子私钥”“子公钥”(这里的“子私钥”和硬化派生出来的“子私钥”是不同的)
通过“父公钥”和“父链码”仅可以得到“子公钥”
这就可以公布“父公钥”和“父链码”,生成观察钱包,由于拿不到父私钥无法生成子私钥,也就不能操作账户了

图2,普通派生时,两个派生函数的区别
“链码”的功能就是确保两个函数生成一致的“子公钥”,并且支持生成“密钥树”
下面再次分开阐述,总结一下两种派生的逻辑思路
(1)  硬化派生
输入:父私钥(k_par),父链码(c_par),索引(i ≥ 2^31)
过程:
计算 I = HMAC-SHA512(c_par, k_par || index)
I_L(前 256 位),用于计算子私钥
子私钥,k_i = (k_par + I_L) mod n(n 为椭圆曲线阶)
I_R(后 256 位):子链码(c_i)
输出:子私钥(k_i),子链码(c_i)
特点:需要父私钥,无法从父公钥派生,安全性高
(2)  普通派生
输入:父公钥(K_par),父链码(c_par),索引(i < 2^31)
过程:
计算 I = HMAC-SHA512(c_par, K_par || index)
I_L:子私钥,k_i = k_par + I_L (mod n)
I_R:子链码(c_i)
子公钥:K_i = point(k_i)(点乘,secp256k1 曲线)
输出:子公钥(K_i),子链码(c_i)。
特点:可从父公钥派生,适合建立观察钱包
(3)  密钥树
主密钥为主根,子密钥通过索引逐级派生,形成树状结构
索引范围:0 到 2^32-1(0x00000000 到 0xFFFFFFFF)
硬化索引:2^31 到 2^32-1(0x80000000 到 0xFFFFFFFF)
非硬化索引:0 到 2^31-1(0x00000000 到 0x7FFFFFFF)

#钱包 #Wallet #BIP
钱包(五)- BIP44标准与未来企业未来的企业一定会走向智能化,财务管理也一定会大变样,从BIP44我们就可以看出端倪了,未来三十年社会会发展成什么样还真不好说。 #钱包 #BIP

钱包(五)- BIP44标准与未来企业

未来的企业一定会走向智能化,财务管理也一定会大变样,从BIP44我们就可以看出端倪了,未来三十年社会会发展成什么样还真不好说。

#钱包 #BIP
登录解锁更多内容
浏览最新的加密货币新闻
⚡️ 参与加密货币领域的最新讨论
💬 与喜爱的创作者互动
👍 查看感兴趣的内容
邮箱/手机号码