区块链研究实验室

区块链研究实验室

专注区块链技术研发,区块链大学知识培训,区块链技术研发社区和区块链孵化
66

文章

501383

浏览

  • 停止使用Solidity的transfer()函数

    以太坊看起来EIP 1884正在伊斯坦布尔硬叉前进。这一变化增加了sload操作的gas成本,因此打破了一些现有的智能合约。这些合约将破裂,因为它们的fallback函数过去消耗的gas少于2300,现在它们将消耗更多。为什么2300gas是重要的? 如果通过Solidity的transfer()或send()方法调用合约的fallback函数,则它是合约的fallback函数。
    2019-09-19 10:36:46 3167
    • 使用工厂模式提高智能合约安全性

      智能合约可以部署其他智能合约。这使工厂模式成为可能,在工厂模式中,您可以创建多个智能合同,每个智能合同只跟踪一件事,而不是一个跟踪许多事情的智能合同。使用此模式可以简化代码并减少某些类型的安全漏洞的影响。在这篇文章中,我将向您介绍一个基于我们在最近的审计中发现的一个关键漏洞的示例。如果使用了工厂模式,那么漏洞就就减少了很多。
      2019-09-18 11:21:10 3850
      • 关于polkadot的substrate与runtime编译教程-part2

        chainspec JSON是一个大的JSON对象,通过substrate build-spec命令生成。此命令通过引用节点的导入runtime模块并查找需要定义的公开配置来工作。这些将是空值或提供默认值。本质上,runtime模块可以依赖于“创世配置”,换句话说,我们在区块链首次初始化和构建其状态时提供的配置。这一状态是通过创世地块-第一个生产的区块链启动的。chainspec json文件的任务是定义这个初始状态。
        2019-09-18 10:16:49 3455
        • 关于polkadot的substrate与runtime编译教程-part1

          substrate和并发runtime模块是用rust开发的,rust是一种静态类型语言,具有内存安全特性,提供速度和可靠性。这是一个在区块链开发中经常被忽视的主题,但对于采用是至关重要的:如何解决Rust问题。我们不会在这篇文章中分析Rust代码,但对于对Substrate感兴趣的开发人员来说,这将是一个前所未有的关注点。
          2019-09-18 10:11:59 3522
          • 区块链数字资产的标记化

            在本文中,我将为数字资产实现一个简单有效的标记化智能合约。如果你觉得代码有用,请随意重用。本文的第二个目的是说明为什么一些用于区块链开发的用例是有用的,而另一些用例则更值得怀疑。通常关键在于权力下放是否合理。
            2019-09-13 14:21:12 14487
            • 区块链上的分片和扩展

              以太坊是与分片概念最为同义的区块链,要理解为什么以太坊开发者社区想要实现分片,就必须了解它是什么,以及为什么它是一个有吸引的解决方案。据ETH gas费用管理,将交易添加到以太坊区块链大约需要1.78分钟,每32秒生成一个新的区块,平均每秒处理15-20个交易。这个生态系统创造了一个有利于矿工而非用户的环境,如果用户想优先处理他们的交易,他们必须提高gas费用。
              2019-09-05 14:06:37 11897
              • 在Solidity智能合约中使用Enums之前要三思

                想象一下,你正在写一个Solidity智能合约,其中一个属性可以被描述为类型或状态。换句话说,来自一组有限的选项。你马上对自己说:“太好了,我只会使用枚举类型来表示这个状态变量。”一方面,这种方法有一些好处,比如增加可读性。另一方面,它很容易让你走上一条可能导致问题的棘手道路。
                2019-09-04 16:11:45 12361
                • 如何使用solidity实现staking功能

                  当某人投资某些资产以换取某种程度的控制,影响力或参与其活动时,就会有人持有该企业的股份。在加密货币世界中,这被理解为只要他们不转让他们拥有的某些代币,就会给予用户某种权利或奖励。staking机制通常鼓励对代币交易进行代币持有,而代币交易又有望推动代币估值。
                  2019-09-03 12:43:50 13199
                  • 使用Rust实现发送以太坊交易

                    本教程将指导如何使用rust实现发送以太坊交易所需的代码。先决条件,我们假设您已经拥有Rust IDE,并且具有Rust编程的合理知识。我们还假设一些关于以太坊的基本知识,并且不涉及以太坊事务的内容等概念。
                    2019-09-02 11:32:22 13425
                    • 如何在Solidity中设计模块化智能合约

                      在本文中,我将描述如何使用称为目标模式的东西来模块化智能合约。使用标准的solidity,您将学习如何使用abi.encodeSelector和target.call(data)重写脆弱、耦合的调用,以清除模块和分离关注点。为此,我们将以HumanityDAO为例 - 以及他们如何使用目标模式将治理与注册表分开。
                      2019-08-30 11:29:32 14824
                      • 使用GETH实现系统后端搭建

                        我正在创建一系列非常容易理解的文章,这些文章既解释了我所做的事情,也让我重写从旧的混乱黑客到希望更清洁版本的所有内容。使测试环境成为可能的单个主要组件是构建在geth源库中的模拟后端。模拟的后端是一个geth-ethereum虚拟机,您可以初始化、提交事务、密封块,实际上,将其视为私有区块链节点。
                        2019-08-29 11:38:02 14486
                        • 状态通道如何利用OVM技术扩展

                          一个多月前,我们热情地宣布了OVM,一个区块链的扩展通用2层(L2)解决方案,同时继承了基础链(L1)的所有安全性。这项工作虽然非常有希望,但纯粹是理论上的…直到今天!我们很高兴地宣布rubber已经以概念验证的形式在OVM上实现了状态通道。这项工作演示了状态通道如何在OVM上无缝运行,如果您稍微推断一下,如何在OVM上构建所有的二级解决方案,从而以较少的开发工作实现更好的标准化、安全性和互操作性。
                          2019-08-28 14:17:47 12553
                          • 如何使用Hyperledger Caliper在谷歌云上测试您的区块链

                            测试区块链应用程序可能很麻烦,主要是因为它们非常复杂的,需要资源要求高。在云上测试区块链应用程序可以提高测试过程的效率,以及实现更真实的测试环境。本文提供了有关如何在谷歌云上使用Hyperledger Caliper(提交302665)的指南,介绍了测试Hyperledger Composer应用程序的场景,Hyperledger Composer应用程序是一个便于Hyperledger Fabric应用程序开发的区块链框架。尽管如此,此测试过程适用于Hyperledger Caliper支持的所有区块链
                            2019-08-27 12:02:41 8930
                            • 如何用闪电网络搭建应用程序栈

                              在这一周中,在构建LightWork Web应用程序的第一个版本时,我遇到了一些架构问题,主要与处理ln节点和我的Web应用程序之间的bolt11发票(core to ln)有关。在经历了(大部分)这些障碍之后,我想我会写一些关于开发一个由LN驱动的应用程序以及如何减少大家在开发时遇到的主要障碍。
                              2019-08-26 11:51:12 8036
                              • 在go开发环境中进行密钥加载测试

                                我正在发布我的“hacky”golang测试环境,该环境深入链接到go-ethereum代码库。测试智能合约的一个重要部分是能够生成和使用任意数量的密钥/地址来签署/发送/接收交易。理想情况下,我们不应该使用实时密钥对,因此我创建了可以在https://github.com/DaveAppleton/memorykeys找到的内存密钥。
                                2019-08-23 13:07:18 11711
                                • 使用Web3j管理Java中的ERC20令牌

                                  在本文中,我们将学习如何使用Web3j库管理Java中的ERC20(Fungible)令牌。ERC20是以太坊智能合约标准,用于以兼容的方式实现令牌,因此很容易与任何应用程序(DAPP、钱包、交换等)交互和集成令牌。
                                  2019-08-22 12:40:56 5729
                                  • 文件存储在IPFS上是否足够安全和隐秘?

                                    区块链的透明度很好,但对于许多涉及用户数据的用例来说,隐私和保密性是至关重要的。在构建任何应用程序时,无论其集中性或分散性如何,您迟早都需要保持用户数据。它已成为项目在IPFS上公开加密和存储敏感数据的一种流行方法 - 实质上是为每个人提供加密数据!不要误会我的意思,加密绝对是重要的。但是,如果加密数据只能由授权方访问,那会不会更安全?
                                    2019-08-20 12:51:42 8281
                                    • 区块链协议中的随机重要性

                                      许多现代的区块链协议,包括near,都依赖随机性的来源来选择在协议中执行某些操作的参与者。如果恶意参与者能够影响这种随机性源,他们就可以增加被选中的机会,并可能危及协议的安全性。分布式随机性也是构建在区块链上的许多分布式应用程序的重要组成部分。例如,一个智能合约接受参与者的下注,并以49%的比例支付两倍的金额,而以51%的比例不支付,它假设它可以得到一个不可破解的随机数。如果恶意参与者能够影响或预测随机数,他们就可以增加在智能合约中获得付款的机会,并将其耗尽。
                                      2019-08-19 11:55:54 2891
                                      • 在linux系统中运行Pantheon与Java以太坊客户端

                                        在工具栏中使用一些强大的工具对于Java开发人员来说至关重要,而以太坊区块链开发人员的关键工具之一就是网络客户端。这是与区块链进行数据通信的软件。client:spin启动节点,充当对等发现代理,查看其他人参与网络,并验证和发送事务。
                                        2019-08-17 20:02:48 12523
                                        • 使用Java与以太坊智能合约交互

                                          在本教程中,您将学习如何使用Web3j Java库部署智能合约,以及如何与智能合约的功能进行交互。作为先决条件,您应该熟悉帐户管理和智能合约java wrapper生成,如本系列前一篇文章中所述。为了保持连续性,我们将部署相同的DocumentRegistry智能合约。区块链研究实验室|从您的智能合同生成Java封装器。
                                          2019-08-16 12:48:38 9301
扫二维码

扫一扫,关注微信公众号