Solidity

[区块链笔记8] 前端js通过metamask的web3与智能合约交互

不羁岁月 提交于 2020-08-05 02:44:47
注意:这是一篇没有任何营养的笔记 文章目录 准备阶段 Ganache与metamask链接 前端页面 第1个bug 第2个bug 今日总结 准备阶段 truffle框架搭建 编写solidity代码 编辑迁移文件 编辑truffle-config.js文件 truffle编译 启动Ganache truffle部署 ps:前几篇笔记里有搭建过程 Ganache与metamask链接 把ganache的12个单词复制到metamask里设置密码 设置metamask网络到http://127.0.0.1:7545 完成链接 前端页面 未完成,因为遇到bug了 在truffle console里面使用的语句到了前端js里面就完全失效,真的已经无语了。这个破东西整了一天,各种百度最后还是没有成功。 希望有明白怎么回事的大佬评论区留言(估计不会有人回答的) ps:等以后再回来做这部分 还是先说一下菜鸡这一天在整的东西吧, 希望大家帮忙看一看,bug在文末说明 先把solidity源码放到remix里面编译一下,拿到他的ABI,放到一个js文件里去。 然后就编写前端代码 < ! DOCTYPE html > < html > < head > < meta charset = "utf-8" > < title > front - web < / title > < script type

简单分析PalletOne——一个连通区块链世界的跨链平台

大兔子大兔子 提交于 2020-07-29 10:22:05
目前有很多伪区块链项目,最主要的特点是,除了支付环节用到区块链的钱包以外,其余都和区块链没关系。业务是中心化的,账号是中心化的,数据也是中心化的,只有交易记录是去中心化的。 目前,区分是否是真区块链项目也很容易,就看数据是否上链。如果数据没有上链,那百分百是伪区块链项目,仅仅是用区块链来蹭热点的。但即使数据上链,也仅仅是达到了区块链的初级阶段,价值孤链,就是区块链世界的信息孤岛。在信息时代,信息从线下搬到线上。线下的信息传播只能依靠物理方式,比如报纸、杂志、电视节目,广播和口口相传。信息上了网,就形成了信息的高速公路。信息传递速度加快,于是改变了世界的脚步,推动了人类的进程。 但是信息的传输并不全是点对点的。大部分情况,信息要保存在一个地方,看到的人能看到,看不到的人便看不到。这就形成了信息孤岛。信息孤岛有天然形成的,也有人为制造的。人为制造的信息孤岛是为了利益。比如某些用户可见,某些用户不可见。比如普通用户不可见,会员可见。尤其是千人千面的内容分发算法,让很多人永远只能看到自己能看到的信息,而看不到他不曾看过的信息。这就是人为的信息孤岛。什么是后区块链时代的价值洼地?我觉得毫无疑问是:跨链。 PalletOne 既是一个跨链协议,更是一个高性能的“超级公链”。 PalletOne 以数字货币抽象、合约抽象和UTXO 抽象等接口的形式,将所有区块链底层封装到适配器中

以太坊智能合约开发常见的10个安全问题

社会主义新天地 提交于 2020-07-27 10:04:59
本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行榜于2020年5月发布。 在2018年,CheckMarx安全研究小组首次发布了Solidity智能合约开发中常见的十大安全问题排行榜,其中位居榜首的两个问题分别是__外部合约拒绝服务__ 和 重入 。2020年的情况已经有所变化, 下表比较了2018年和2020年Solidity十大常见安全问题之间的变化。这些问题按严重程度和流行程度排序: 用自己熟悉的语言学习 以太坊DApp开发 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart S1 – 未检查的外部调用 这是我们之前的Solidity十大安全问题榜单上第三常见的问题。由于现在解决了前两个问题,因此 未检查的外部调用 已升至2020年更新列表中最常见的问题。 Solidity低级调用方法,例如 address.call() ,不会引发异常。相反,如果调用 遇到异常,则它们返回 false 。另一方面,如果 doSomething() 抛出异常,则合约调用(例如 ExternalContract.doSomething() )会自动传播异常。

以太坊零知识证明合约及应用开发入门

China☆狼群 提交于 2020-07-27 02:01:05
在这个教程中,我们将学习如何开发一个基于以太坊的零知识身份证明DApp,学习如何开发Circom零知识电路、如何生成并方法Solidity零知识验证智能合约,以及如何利用Javascript在链下生成零知识证据,并在教程最后提供完整的源代码下载。 区块链开发教程链接: 以太坊 | 比特币 | EOS | Tendermint | Hyperledger Fabric | Omni/USDT | Ripple 1、零知识身份证明DApp概述 我们将开发一个零知识应用来证明一个用户属于特定的群组而无需透露用户的具体信息,使用流程如下图所示: 我们的开发过程分为以下几个步骤: 开发零知识电路 生成用于验证零知识电路的Solidity库 开发智能合约并集成上述Solidity库 本地生成证据并在链上进行验证 2、零知识证明以太坊DApp开发环境搭建 就像你不需要完全理解HTTP协议也可以开发web应用一样,已经有很多工具可以帮助开发基于零知识的DApp而无需密码学或数学基础。 我推荐如下的开发语言和工具链: JavaScript/TypeScript:应用采用javascript/typescript开发,因为这两者在以太坊生态中得到很好的支持 Solidity: 智能合约用Solidity开发,因为它很成熟并且社区很好 Truffle:使用Truffle作为智能合约开发和部署框架

How to generate a random number in solidity?

|▌冷眼眸甩不掉的悲伤 提交于 2020-07-16 04:36:30
问题 I have a couple of keccaks, which could be reduced to one, if I would find a cheap way to get parts of the created uint. pragma solidity ^0.4.19; contract test { function test() { } function sup() returns (uint test) { uint _test = uint(keccak256("wow")); return _test; } } This returns me a sweet random number: 13483274892375982735325 Now the plan is that instead of calling keccak 5 times with different "seeds", I could take that number apart and get something like: 1348, 3274, 8923 etc.

How can we generate multiple random number in ethereum?

佐手、 提交于 2020-06-27 09:38:27
问题 I want my smart contract to return 7 or 8 UNIQUE random numbers ranging from 1 to 100 upon calling the contract. What can be the best approach to obtain such result? 回答1: Probably if you are trying to build roulettes, lotteries, and card games using the Ethereum blockchain, as the Ethereum blockchain is deterministic, it imposes certain difficulties for those who have chosen to write their own pseudo-random number generator (PRNG). Some Vulnerable Methods Currently Used If you are using the

Validate TRON address using solidity ecrecover

孤街醉人 提交于 2020-06-17 11:55:09
问题 I'm trying to validate a signed message using a smart contract running on the TRON network. I've tried a few different methods but all failed: Based on this article I've deployed the following smart contract: contract Verifier { function recoverAddr(bytes32 msgHash, uint8 v, bytes32 r, bytes32 s) returns (address) { return ecrecover(msgHash, v, r, s); } function isSigned(address _addr, bytes32 msgHash, uint8 v, bytes32 r, bytes32 s) returns (bool) { return ecrecover(msgHash, v, r, s) == _addr

Solidity合约中的访问控制实现:Ownable | Roles | AccessControl

拜拜、爱过 提交于 2020-05-05 23:54:07
OpenZeppelin提供了智能合约的三种访问控制模式:Ownable合约、Roles库和3.0新增的AccessControl合约。在这个教程中,我们将学习这三种访问控制模式的差异,以及如何在自己的以太坊智能合约中利用这些访问控制模式增强Solidity合约的安全性。 用你熟悉的开发语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 控制对智能合约特定方法的访问权限,对于智能合约的安全性非常重要。熟悉OpenZeppelin的智能合约库的开发者都知道这个库已经提供了根据访问等级进行访问限制的选项,其中最常见的就是 Ownable 合约管理的 onlyOwner 模式,另一个是OpenZeppelin的 Roles 库,它允许合约在部署前定义多种角色并为每个函数设置规则,以确保 msg.sender 具有正确的角色。在OpenZeppelin 3.0中又引入了更强大的AccessControl合约,其定位是一站式访问控制解决方案。 1、Ownable合约 —— 最简单最流行的访问控制模式 onlyOwner 模式是最常见也最容易实现的访问控制方法,它虽然基础但非常有效。该模式假设智能合约存在单一管理员,支持管理员将全新转移给另一个账号。 通过扩展Ownable合约

Objects are not valid as a React child. If you meant to render a collection of children, use an array instead - Error Solidity - React

£可爱£侵袭症+ 提交于 2020-04-30 09:18:07
问题 I am developing a document verification system with ReactJS and solidity - smart contract. I want to display the result of my smart contract's get().call() method on the frontend, with a popup or even with a simple text. The problem I am facing now is that when I am trying to display the response of the method, it throws to me that error: Objects are not valid as a React child. If you meant to render a collection of children, use an array instead Here is the code of my solidity contract:

如何系统学习区块链技术-干货来袭

北城以北 提交于 2020-04-28 07:04:35
区块链术涉及面很广,很多开发人员看了一些资料后,感觉似懂非懂。 如何系统的学习区块链技术,是很多想从事区块链开发的程序员的疑问,本文内容有点多,一次吸收不完可以收藏以后再用。 苦口婆心写在前面: 从事区块链开发有很多方向,如:区块链应用开发人员、区块链架构师、底层核心开发、共识算法研究等等。 方向不同,需要学习的内容就不一样,如果基于区块链应用开发,只需要了解一门编程语言(nodejs, Go, Python, C++ 等), 大概了解区块链的原理,不一定要深入,当然理解越深入开发就越顺。 如果做区块链基础开发,就需要了解加密算法,P2P 通信,共识算法等等。 由于区块链涉及的技术很多,可以先对各个技术有一个概念了解,再逐步深入原理。 当你在学习了解概念的时候,必定会产生很多疑问, 例如我们经常可以看到一句: 比特币的共识机制是通过工作量证明(POW)来实现的。 就有了新疑问:什么是工作量证明,进一步了解,它是通过验证的一个特定结果,就能确认参与者完成了相应的工作量(不理解没关系,可以简单为,张三考试考了 100 分,就确认张三肯定好好学习了)。 这时又有了新的疑问,比特币在验证什么样的结果,这时你又需要了解密码学和 Hash。 逐步深入的过程也是解答疑问的过程,需要我们善用 Google 搜索。 如果觉得已经理解一个概念或原理时,可以尝试动手实现它,如在理解挖矿后