原文标题:《用 Python 进行 DeFi 应用的开发——不同的区块链项目是如何解决安全问题的?》 Tezos (特所思)作为著名的 PoS 公链,其亮点并不仅仅只是 Staking,Tezos 的形式化验证特征同样也是其主要技术亮点之一。形式化验证能让 DeFi 的安全性方面如虎添翼,让用户对资金的智能合约安全更加有信心。 形式化验证方法和 DeFi 安全 DeFi 的爆发式增长吸引了不少开发者,著名的 DeFi 协议如 Compound、Uniswap、Syntheix 累计收获了上亿美元的资金。但是,DeFi 存在一个重大漏洞:安全性。 这个漏洞的代价是昂贵的,它给一些区块链项目(比如以太坊)的网络效应带来了负面的影响。过去几个月被攻击的 DeFi 项目就包括 Curve.fi、Lendf.Me、PegNet 等,其损失从数十万美元到数千万美元不等。tBTC 在上线几天后通过自查及时发现了 bug 并冻结了存币,避免了一场灾难。 而对于注重安全性的 DeFi 开发者来说,Tezos 的形式化验证方案能够在加强安全性的同时赋能 DeFi 应用。 在传统互联网应用中,如果服务器被黑客攻击,只需要对服务器端用户数据进行回滚就可以挽回用户损失。因此,重视用户体验的传统互联网应用可以以牺牲安全性换取速度和功能上的快速迭代。然而在 DeFi 应用中,由于区块链的不可篡改性,智能合约一旦上线并出现安全隐患,对用户造成的损失是巨大且不可挽回的。 因此,DeFi 应用开发的过程需要用大量的测试和昂贵的审计以获取足够的安全性,而反过来会牺牲迭代的速度,影响了产品的易用性。并且,因为安全审计的价格昂贵,很多开发者并没有能力发起 DeFi 应用。 区块链开发人员目前仍然是稀缺的,导致人工审计的成本非常高昂。因此越来越多地使用机器辅助验证是目前的趋势,而机器辅助审计中的形式化验证方法更是确保安全性的不二法宝。 形式化验证指的是用数学中的形式化方法对算法的性质进行证明或证伪,方法有两种: 一种是模型检验,即把系统所有可能的状态列出并进行一一检验,此种方法全自动化但只适合小型系统;另一种是演绎验证,首先把系统代码标记成抽象数学模型,然后对定理进行证明,此种方法适合大型系统,但是首先需要人工将系统的运作方法转换成验证系统可以理解的语言。形式化验证方法在很长一段时间里,由于其成本较高昂,主要应用于学术、国防军工、航空航天等领域,在商业领域应用较少。由于传统互联网应用与区块链应用的运行环境有着本质的不同,其开发流程也应当相应地进行调整,其中最关键点在于安全验证环节的投入比例。 函数式语言在公链领域的应用 许多区块链项目为了保证安全性,在底层架构、虚拟机或智能合约的语言方面,选择了函数式语言,如 Ocaml、Haskell、Erlang 等。函数式语言由于其严格的变量类型定义和编译检验,以及拥有较好的形式化验证工具链(比如 CoQ ),在安全领域拥有很好的口碑。常见过程式语言编写的代码,一般必须重新用函数式语言标记方能进行形式化验证。 我们看到,在以上项目中,Tezos 支持的智能合约高级语言的种类最丰富,不仅包括 Pascal、Ocaml、Haskell 等多种函数式语言,也包括了 Python 这一应用普遍的语言。而 Cardano、Aeternity 都需要开发者学习一门新的函数式语言,使得开发门槛变得较高。 Michelson 语言的安全特性 在智能合约语言的设计上,Tezos 采用了一种取长补短的创新方案。Tezos 的智能合约底层采用基于 Ocaml 的 Michelson 语言,而开发者实际接触的是 Python 等高级语言,并不需要了解 Michelson 语言本身。如此以来,可以结合 Michelson 语言更好的安全性与可审计性,与 Python 等高级语言的易于编程性。 Michelson 在架构上对标的是以太坊 EVM ,与 EVM 相比其相似之处有 是一种 stack 语言使用链上存储采用 gas 费用模型图灵完备Michelson 与 EVM 的主要区别是, 静态类型 所有进入 Michelson 智能合约的数据,都需要明确定义其类型。避免了跟类型不匹配有关的程序 bug ,如浮点溢出、除以 0 等。 原子计算 一个 Michelson 智能合约必须完成执行后才能调用其它智能合约。这一点避免了以太坊上经常发生的 re-entrancy 攻击 (如著名的 DAO 攻击)。 明确的调用失败 执行期发生的失败只有三种,明确失败(用 FAILWITH 语句处理)、gas 耗尽、数量溢出。这一点避免了以太坊上常出现的隐含模代数、错误指令、stack 溢出等类型的常见执行期攻击。 严格的语义 大小写、空格、短行都有严格规范的要求,让代码审计变得更方便。 可以看到 Michelson 相比 EVM 在安全上有诸多的改进,可以更好地抵御以太坊上经常出现的攻击类型。 SmartPy 开发工具包 Tezos 上的 Dapp 开发者并不需要掌握 Michelson 语言 。这是因为开发者可以使用基于 Python 的 SmartPy SDK ,并将 Python 代码写的智能合约编译成 Michelson 语言。因此 Dapp 开发者只需要会 Python 就可以轻松上手。 SmartPy 是一个 Python 库,而 SmartPy.io 让用户能够在一个浏览器中执行 Python 脚本。Smartpy 的官方网站提供了一个 在线编辑器,Dapp 开发者可以直接用 Python 编写代码并编译成 Michelson 智能合约,然后部署到 Tezos 主网上。其使用界面设计相比以太坊的 Remix 在线编辑器更简洁明了,非常容易上手。Smartpy 还自带了一些现成的开发模版,方便开发者参考学习。 SmartPy.io 的界面如下。屏幕左侧区域是代码编写区,开发者可以轻松地使用 Python 来写入并编辑合约的代码。Smartpy 不需要像 Remix 一样分两步编译和执行,按一下代码区上方的执行按钮就一步搞定,非常方便。执行结果立马就可以在屏幕右侧显示出来,包括合约调用的入口、存储状态、编译的 Michelson 代码等。 除了在线编辑器,SmartPy 还有一个命令行版本 SmartPyBasic ,让开发者在本地环境也可以编译运行 SmartPy 代码。 部署的智能合约可以用 SmartPy Contract Explorer 进行查看,合约的当前状态和历史操作都一览无余。 目前 SmartPy 已经支持 Python 常见的许多功能,如本地变量,变量类型判断,Lambda 函数等。少数不支持的功能如 array,可以用 map 来代替。这也就意味着学习 SmartPy 不需要投入很多的时间和精力,开发者可以专注于实现更好的功能。 以下是一些关于 SmartPy 入门的训练课程: Cryptoverse WarsBlockmatics SmartPy Developer course
来源链接:www.longhash.com 以太坊 以太坊 开放的分布式区块链应用平台,通过其专属加密货币 Ether 以太币提供去中心化的虚拟机,处理点对点合约。允许任何人建立和使用通过区块链技术运行的去中心化应用,没有任何欺诈、审查、第三方监管。 以太坊的概念首次在 2013 至 2014 年由维塔利克·布特林 Vitalik Buterin 受比特币启发后提出,旨在共同构建一个更全球化、更自由、更可靠的互联网。 以太坊 Ethereum ETH ERC 20 ERC-20 ERC20 ERC721 ERC-721 查看更多 Tezos Tezos Tezos 一词来源于古希腊语,意为 Smart Contract 智能合约。作为一个去中心化的区块链,Tezos 通过建立一个真实的数字联邦来管理自身,来使得正式的验证简单化。这一技术在数学上保证了交易代码的准确性,提高了智能合约的安全性。Tezos 是一个通用的且能够自我进化的加密数字账本。其最大优势是可以吸收任何一种基于区块链的账本好的方面,其将常规区块链上的各种操作以单纯的功能模块的方式实现。通过网络壳 Shell 利用这些操作处理网络层任务。比特币、以太坊、Cryptonote 等都可以在 Tezos 内通过网络层接口实现,进而被表征。 Tezos XTZ Tezos基金会 查看更多 —- 编译者/作者:LongHash区块链资讯 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
用 Python 也能进行 DeFi 开发?简析 Tezos 安全技术亮点
2020-10-12 LongHash区块链资讯 来源:链闻
LOADING...
相关阅读:
- 以太坊隐私协议Tornado Cash资金池余额创历史新高 - 律动BlockBeats2020-10-12
- ?看来行业进入贤者时间了 | 都去度假吧2020-10-12
- 青龙看币:早盘行情分析(20200929)2020-10-12
- 去中心化预言机 NEST Protocol 第 2 次区块奖励衰减已经生效2020-10-12
- 【详细教程】30美金GHD&BTY两大超值羊毛,JustSwap上立即变现2020-10-12