这篇博客文章供开发人员了解 Flow 区块链。
首先,在不同的区块链上开发用例可能会非常艰巨,尤其是当每个区块链都呈现出一个全新的架构。在此文章中,我们将探讨 Flow 账户与以太坊账户的区别。
我们假设您具有区块链和密码学领域的基础知识。
所以,让我们开始吧!
以太坊账户是从私钥派生的。以太坊私钥是长度为 64 (256 位 / 32 字节)的十六进制数。请记住,猜测出相同的以太坊帐户的机会非常非常小,几乎不可能。正式而言,以太坊私钥的猜测几率为:1/2 ^ 256
。让我们试想一下这个数字。Adrian Bednarek 将识别随机以太坊密钥的难度等同于在海滩上挑选沙粒的场景,那么要求一位朋友在“十亿亿万亿”的海滩中找到相同的一粒沙粒。这疯了,不是吗?
成功生成私钥后,将对其进行数学运算以得出公钥。最后,对公钥进行更多的数学运算以得出有效地址。
注意,上述过程是单向的。从给定地址生成私钥是不可能的。
简而言之,这就是您在以太坊区块链上生成帐户的方式。
现在,让我们看一下 Flow 上的帐户
在 Flow 区块链上," 账户 " 的概念非常不同。在 Flow 上,一个账户是由区块链自动生成的,并且可以支持多个公钥。
要在 Flow 上创建一个帐户,首先必须使用 P-256
或 secp256k1
ECDSA(椭圆曲线数字签名算法)曲线生成公钥和私钥对,然后将交易提交至区块链。通过该交易,初始化新的帐户存储,然后将生成的密钥分配给该帐户。要了解有关在 Flow 上生成帐户的更多信息,请参阅这里。
Flow 上的每个帐户可能具有 1 到 n 个与之关联的公共密钥,并且对应于每个公共密钥,将存在一个由帐户所有者紧密持有的私有密钥。每个密钥的关联权重范围为 1 到 1000。在对交易进行签名时,签名密钥的总权重必须大于或等于 1000。
Flow 智能合约
在以太坊区块链上,智能合约被部署到他们的个人账户中。这样的帐户没有私钥(即合约账户)。但是,在 Flow 区块链上,帐户类似于容器。换句话说,智能合约是帐户的一部分,该帐户可以同时具有多个已部署的智能合约。(注:将来的主网将支持多个智能合约,但目前仅支持一个。) Flow 区块链还使开发人员能够使用智能合约的私钥删除智能合约(未在会在其他地方使用)。但必须由智能合约所属的账户执行。
Flow 中的“资源”(Resource)
Flow 支持使用 Cadence (一种基于 Flow 的编程语言)进行新的编程模式,称为“面向资源的编程”。Cadence 使开发人员轻松创建类似于 Crypto Kitties 的加密资产。此类资产称为“资源”。资源是 Cadence 语言中内置的一种特殊的类型,由严格的 Move 语义制约。资源一次只能存在于一个位置,不能被复制,也不能被意外丢失或删除。
作为开发人员,您可以借用其他帐户的资源来使用它们。例如,您可以从其创建者那里借用 Crypto Pokemon 之类的加密资产,并出于自己的目的免费使用它(当然要经过所有者的许可)。为了使开发人员能够访问他 / 她的资源,开发人员必须创建一个功能。能力由路径标识,并链接到目标路径,而不是直接链接到对象。功能可以是公共的(任何用户都可以访问),也可以是私有的(只能授权用户访问)。
用户通常会希望这样做,以便其他特定用户甚至其他任何人都可以访问存储对象的某些字段和功能。这可以通过创建功能来完成。
但是,请注意,创建者可以在他们喜欢的任何时候删除该资源。但是,如果当前正在使用资源,则 Flow 区块链会阻止创建者这样做。
现在,让我们了解一下 Flow 区块链上的典型帐户。
除了私钥和智能合约,这些“资源”也驻留在帐户中。这些资源可以在“存储”下找到。此“存储”已建立索引,可以使用 API 进行访问。“存储”块上存在三个域:
- / storage /:这是存储资源的位置。让我们以以太坊区块链为例来更好地理解这一点。以太坊上有不同的代币,例如 USDT,MKR 等。以太坊账户可以跟踪自其创建以来与之交互的所有代币和智能合约吗?从技术上讲,可以使用以太坊日志。但是,以太坊并没有为智能合约中的账户资产提供单一存储。幸运的是,Flow 做到了。您可以跟踪与资源进行交互的所有智能合约。Flow 帐户具有管理数据的能力
- / private /:这允许其他开发人员操纵帐户中的存储。但是,这并非对所有开发人员都开放。您必须明确授予开发人员访问权限。对存储数据的访问受“功能安全性”原则的约束。这意味着,如果一个帐户希望能够访问另一个帐户的存储对象,则它必须对该对象具有有效的权限。这是 Flow 区块链是以账户为中心 / 以资源为中心的区块链的原因之一。
- / public /:这使您可以授予开发人员访问某些功能的权限。这些功能的接口在此块中发布。
例如,您可能希望任何人阅读您拥有的 NFT,以便该功能(例如 getNFTs ())进入 / public,但您只希望与之交易的人能够访问(tradeNFT (),例如),因此您将其放在 / private 中。
最后一个重要的区别是 Flow 区块链上的智能合约是可升级的。即使超级才华横溢的团队创建了某款软件,也可能很难在第一时间就做到正确。因此,在 Flow 区块链上,智能合约可以以“beta 状态”部署到主网上,在那里智能合约代码仍然可以更新。一旦智能合约创建者确信其代码是安全的,便可以对其进行定稿,从而使智能合约完全不可变。
在这篇文章中,我们:
- 探索以太坊区块链和 Flow 区块链上的账户结构如何发生巨大变化
- 了解到 Cadence 编程语言将促进 Flow 区块链上的开发
- 讨论什么是资源以及如何将其放置在 Flow 帐户中
关注Flow
我们欢迎越来越多的小伙伴加入Flow星球,为星球增添色彩!
Flow 官网:https://zh.onflow.org/
Flow 论坛: https://forum.onflow.org/
Flow Discord:
https://discord.com/invite/flow
Flow CN Telegram: https://t.me/flow_zh
Flow B站:https://space.bilibili.com/1002168058
Flow 微博:
https://weibo.com/7610419699
Flow CSDN:
https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343
扫码添加Flow官方账号微信号,加入Flow生态群
微信号 : FlowChainOfficial