Solidity

Uncaught Error: Returned values aren't valid, did it run Out of Gas?

家住魔仙堡 提交于 2021-01-27 05:54:49
问题 I'm listening to events of my deployed contract. Whenever a transaction gets completed and event is fired receiving the response causes following error: Uncaught Error: Returned values aren't valid, did it run Out of Gas? at ABICoder.push../node_modules/web3-eth-abi/src/index.js.ABICoder.decodeParameters (index.js:227) at ABICoder.push../node_modules/web3-eth-abi/src/index.js.ABICoder.decodeLog (index.js:277) Web3 version: 1.0.0-beta36 Metamask version: 4.16.0 How to fix it? 回答1: Try the

Uncaught Error: Returned values aren't valid, did it run Out of Gas?

让人想犯罪 __ 提交于 2021-01-27 05:54:10
问题 I'm listening to events of my deployed contract. Whenever a transaction gets completed and event is fired receiving the response causes following error: Uncaught Error: Returned values aren't valid, did it run Out of Gas? at ABICoder.push../node_modules/web3-eth-abi/src/index.js.ABICoder.decodeParameters (index.js:227) at ABICoder.push../node_modules/web3-eth-abi/src/index.js.ABICoder.decodeLog (index.js:277) Web3 version: 1.0.0-beta36 Metamask version: 4.16.0 How to fix it? 回答1: Try the

【区块链】以太坊开发入门指南

狂风中的少年 提交于 2021-01-24 02:13:40
写在前面 阅读本文前,你应该大概了解区块链是什么。 以太坊是什么 以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。 以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。 智能合约 什么是智能合约 以太坊上运行的程序称之为智能合约 , 它是代码和数据(状态)的集合。 智能合约可以理解为在区块链上可以自动执行的(由消息驱动的)、以代码形式编写的合同(特殊的交易)。 我们知道比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限, 而以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。 智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。 目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。

以太坊是什么

一笑奈何 提交于 2021-01-24 01:49:27
很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。 写在前面 阅读本文前,你应该大概了解区块链是什么,如果你还不了解,欢迎订阅专栏: 区块链技术 指引你从头开始学区块链技术。 以太坊是什么 以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。 对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用。 在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。 以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。 目前围绕以太坊已经形成了一个较为完善的开发生态圈:有社区的支持,有很多开发框架、工具可以选择。 智能合约 什么是智能合约 以太坊上的程序称之为智能合约 , 它是代码和数据(状态)的集合。 智能合约可以理解为在区块链上可以自动执行的(由消息驱动的)、以代码形式编写的合同(特殊的交易)。

社区招聘需求汇总(2021-01-09)

若如初见. 提交于 2021-01-12 23:04:16
最近社区里有些招聘的需求,我们汇总了下,有兴趣的朋友请自行联系。 如果你的团队也在招聘,可以和我们联系,我们汇总后,会不定时的发出。 币信 区块链工程师: 岗位描述 主要负责公链基础设施研究与开发; 负责公链上层的应用产品的设计和研发工作; 不限技术栈,可根据个人开发偏好进行技术选型; 职位要求 对区块链技术有浓厚兴趣; 熟悉常用的数据结构和算法; 有区块链, 分布式网络、应用密码学、网络安全等研发经验; 熟悉 Golang 、C/C++,Rust,java,Javascript,Python 等至少一种编程语言,良好的编程习惯 优先 有过区块链钱包开发经验; 熟悉以太坊 ETH 及 Solidity 合约语言; 熟悉常用加密算法 币信 前端工程师: 岗位描述 主要负责加密货币钱包的浏览器插件开发; 单页应用 SPA 的开发和桌面端封装( Electron ); 不限技术栈,可根据个人开发偏好进行技术选型 职位要求 独立思考、分析、解决、归纳问题的能力; 2 年及以上相关工作经验,编码能力和编码风格良好,精通常用的数据结构与算法; 熟悉 Javascript / HTML / CSS / HTTP,熟悉 W3C 标准与 ES 规范,熟悉 Web 语义化和相关前端技术; 熟练使用目前各类主流前端框架( React / Vue / Angular 选之一 )并理解相关实现原理 优先

Solidity编程开发实例

北慕城南 提交于 2021-01-12 20:33:10
Solidity 编程开发实例 接下来的智能合约教程非常复杂,但展示了很多Solidity的编程开发特性。它实现了一个入门的投票合约。当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵。我们不能解决所有的问题,但至少我们会展示如何委托投票可以同时做到投票统计是自动和完全透明。 Voting 投票 思路是为每张选票创建一个合约,每个投票选项提供一个短名称。合约创建者作为会长将会给每个投票参与人各自的地址投票权。 地址后面的人们可以选择自己投票或者委托信任的代表人替他们投票。在投票结束后,winningProposal()将会返回获得票数最多的提案。 /// @title Voting with delegation. /// @title 授权投票 contract Ballot { // 这里声明了复杂类型 // 将会在被后面的参数使用 // 代表一个独立的投票人。 struct Voter { uint weight; // 累积的权重。 bool voted; // 如果为真,则表示该投票人已经投票。 address delegate; // 委托的投票代表 uint vote; // 投票选择的提案索引号 } // 这是一个独立提案的类型 struct Proposal { bytes32 name; // 短名称(32字节) uint voteCount; //

Solidity 官方文档中文版 4_Solidity 编程实例

青春壹個敷衍的年華 提交于 2021-01-12 19:08:40
Voting 投票 接下来的合约非常复杂,但展示了很多Solidity的特性。它实现了一个投票合约。当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵。我们不能解决所有的问题,但至少我们会展示如何委托投票可以同时做到投票统计是自动和完全透明。 思路是为每张选票创建一个合约,每个投票选项提供一个短名称。合约创建者作为会长将会给每个投票参与人各自的地址投票权。 地址后面的人们可以选择自己投票或者委托信任的代表人替他们投票。在投票结束后,winningProposal()将会返回获得票数最多的提案。 /// @title Voting with delegation. /// @title 授权投票 contract Ballot { // 这里声明了复杂类型 // 将会在被后面的参数使用 // 代表一个独立的投票人。 struct Voter { uint weight; // 累积的权重。 bool voted; // 如果为真,则表示该投票人已经投票。 address delegate; // 委托的投票代表 uint vote; // 投票选择的提案索引号 } // 这是一个独立提案的类型 struct Proposal { bytes32 name; // 短名称(32字节) uint voteCount; // 累计获得的票数 } address public

Solidity学习(二)

那年仲夏 提交于 2021-01-12 12:12:50
一、string如何存储中文字符 二、固长数组 三、动态数组 四、二维数组 五、动态二维数组 一、string如何存储中文字符 先看一段代码: pragma solidity >=0.4.22 <0.6.0; contract Test { string name = "张三"; function getLength() public view returns(uint256){ return bytes(name).length; } } 我们知道,普通字符在占据的内存是一个字节,那么像中文这种特殊字符应该怎么存储呢?我们执行上面的代码: 可以看到,一个中文字符是3个字节,总共是6个。 事实上,在string中,特殊字符是用UTF-8存储的。 关于UTF-8: UTF-8介绍 介绍两个关键字: memory:临时变量,定义在函数内的变量默认为memory,一些版本的编译器要求定义在函数内的临时变量必须加上memory关键字。 storage:永久写入区块链的变量,就是定义在函数之外的状态变量。 把字节数组转化为动态字节数组,代码: pragma solidity ^0.7.0; contract Test { bytes6 name = 0x112233445566; function toNe() view public returns(bytes memory) {

「教程」用Solidity开始编写你的第一个智能合约

匆匆过客 提交于 2021-01-10 21:25:56
本文翻译自: Gerald Nash《Build Your First Smart Contract》 原文地址:https://medium.com/crypto-currently/build-your-first-smart-contract-fc36a8ff50ca 由微信公众号“Wancloud万云”翻译并发布于公众号上。 这篇文章,我们将用使用编程语言Solidity教大家编写一个简单的counter智能合约。Solidity这种语言与JavaScript相似。 开始之前,您需要安装的工具: 1. Ganache :这将是我们用来创建仅在我们的计算机上运行的私有区块链的工具。链接:http://truffleframework.com/ganache/ 2. MyEtherWallet副本 ,在这种情况下,URL托管的网站将不起作用。链接:https://github.com/kvhnuke/etherwallet/releases 注意:下载的版本是etherwallet-v3.xx.x.x.zip。 安装完成后,我们开始访问https://remix.ethereum.org/,打开这个网址后显示如下: 这是Remix,一个Solidity语言的在线编译器,我们将用此编译器来编写智能合约代码。 第一次访问该页面时,我们需要将本文编辑器预加载的代码删除

开发一个简单的智能合约

泄露秘密 提交于 2021-01-09 12:12:31
一、环境搭建 搭建Truffle框架 简介:这是一个流行的以太坊开发框架,内置了智能合约编译,连接,部署等功能 Truffle框架依赖Node,需要使用npm来安装,首先需要安装node,npm会同时安装,在官网下载: Nodejs 输入命令查看当前版本 node -v 接着就可以使用npm安装Truffle框架了,使用npm安装Truffle框架,安装命令: np install -g truffle 验证Truffle安装: truffle --version Ganache 在这里我们也要用到Ganache,因为在以太坊上部署和测试智能合约都是要花费以太币的,也就是油费(Gas)。而Ganache可以在本地创建一个区块链网络来测试我们的程序,不需要消耗真实的油费。 Gannache下载路径: Ganache Ganache工作原理:为我们创建一个Ganachi虚拟的区块链网络,给我们分配10个外部账号(节点),每个账户都有100个假以太币。 Ganache界面介绍: ACCOUNTS: 账号界面,显示了自动生成所有的账号及其余额。 BLOCKS: 区块界面,显示了再本地区块链网络上挖掘的每一个区块,及其Gas成本和包含的交易。 TRANSACTIONS: 交易页面,列出了再本地区块链上发生的所有交易 CONTRACTS: 合约页面 EVENTS: 事件页面 LOGS: