书上得来终觉浅,绝知此事要躬行-以太坊平台实战篇

以太坊开发框架——Truffle的基础使用 这里写目录标题TruffleTruffle 简介Truffle 的客户端安装Truffle创建项目Migrationartifacts.require()exports 的函数deployer 对象更新 migration 文件更新 truffle 配置文件创建账户(可用 metamask 上账户转币)部署新建 JavaScript 文件 app/scripts/index.js Truffle Truffle 简介 truffle unbox webpack 一条命令由于要下载众多需要的模块,大概耗时 1 阅读详情

        网上和书上的教程大多是在私有链单机CPU挖矿的情况,遗漏了实战环境中遇到的问题。接下来一步步的阐述实战经验,并结合理论分析。

        有些概念先介绍下
        transactionHash:交易的流水号,转账和执行合约方法都是交易。
        blockHash:根据区块内容计算的唯一哈希值
        blockNumber:区块号,按数字加1累加。

        分叉的情况,多块区块使用同个blockNumber,但不同blockHash。

        

                                                                                            矿机状态图

先看初学者的一段代码:

合约代码:

	contract Calucator {
	     function Calucator() public 
        {
	     }
       function addNumber(uint a,uint b) public  returns(uint k)
	     {
	               k= a+b;
	               returnk;
	     }
	 }	

 

 

Js代码:

 

 

	App.contracts.Calucator.deployed().then(function(instance) {
	       return instance.addNumber(1,2);
	}).then(function(result) {
	       console.log("result:"+result);
	});

预期控制台显示的结果是3,但是result的结果是:

result = {tx:"0x69ddf34a618cd621144fb26dd3e479a85c9ec0bb6c5e2ac76b6aefe9aa74bad5",receipt: {…}, logs:                  Array(0)}

调用合约的方法,返回的是交易hash,合约代码的返回值需要通过回调事件返回。

修改后的代码如下: 合约代码:

	contract Calucator {
		event  returnValue(
			address indexed _from,
			uint indexed  _value
		);
		function Calucator() public {
		}
		function addNumber(uint a,uint b) public 
		{
			uint k = a+b;
			emit returnValue(msg.sender,  k);
		}
	}

Js代码:

	eventCallBack:function(error, result){
		if(!error)
			console.log(result);
	},
	markAdopted: function() {
		var event;
		App.contracts.Calucator.deployed().then(function(instance){
		        event= instance.returnValue();
		        web3.personal.unlockAccount(web3.eth.accounts[0],'123456',999);
		        event.watch(App.eventCallBack);                    
		        return instance.addNumber(1,2);
		}).then(function(result){
		        console.log("result:"+result);
		});
	 }

 

如果搭建的是私有链环境,挖矿速度通常设置比较快,很快就可以捕获到事件的返回,但是在以太坊公有链上,需要等待十几秒的时间,打包区块时才执行合约代码触发回调事件。

 

然而,网上教程没有告诉你的是:事件回调后得到的区块hash并不是最终保存交易记录的区块的blockHash.原因是由于两个或者多个矿工几乎同时发现了一个区块引起的分叉。

        在某个时刻网络上的矿机同时挖出两个区块,blockNumber都为N+1,但是blockHash不一样,两个区块都会执行合约的代码,触发两次回调。一个区块是否最终得到确认保存在主链上需要等六个区块的确认,第N+7的区块生成时,才能最终确认哪个N+1的块是永久保存在主链上。

 

 

以太坊入门【详解】 1.geth 是以太坊(Ethereum)网络中最常用的 Go 语言实现的客户端。注意:以太坊其实就是一个大的全局单例状态机,它的状态的改变就是靠交易来触发,而且交易时唯一可以触发状态的改变的事务。并非提款代码出错了,是因为这是合约的内部交易,并不是某一个账户发到另外一个账户的操作,而是内部函数的行为,被称为。使用有以太币的账号支付gas费用将该智能合约打包到区块链中,让所有节点都可以使用这个智能合约。在以太坊上使用 Solidity 编写的智能合约执行每一步操作都需要燃烧一定数量的 Gas。 阅读详情

相关推荐

封包(一)(雷电模拟器+ProxyDroid+查尔斯3.93+WPE)

自从换了工作就没有给大家分享一些干活,在加上陪伴自己的孩子没有时间更新文章了,这只能在晚上给大家写文档了,我最近在游戏公司上班,研究封包。我把这些东西都做成了笔记,我想有些东西是大家都想弄明白d ...

寒梅独自开 1万+

以太坊DAPP实战

以太坊是一个平台,它上面提供各种模块让用户来搭建应用,如果将搭建应用比作造房子,那么以太坊就提供了墙面、屋顶、地板等模块,用户只需像搭积木一样把房子搭起来,因此在以太坊上建立应用的成本和速度都大大改善。具体来说,以太坊通过一套图灵完备的脚本语言(Ethereum Virtual Machinecode,简称EVM语言)来建立应用,它类似于汇编语言。我们知道,直接用汇编语言编程是非常痛苦的,但以太坊里的编程并不需要直接使用EVM语言,而是类似C语言、Python、Lisp等高级语言,再通过编译器转成EVM语言。上面所说的平台之上的应用,其实就是合约,这是以太坊的核心。合约是一个活在以太坊系统里的自动代理人,他有一个自己的以太币地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,合约会运行自身的代码,最后返回一个结果,这个结果可能是从合约的地址发出另外一笔交易。需要指出的是,以太坊中的交易,不单只是发送以太币而已,它还可以嵌入相当多的额外信息。如果一笔交易是发送给合约的,那么这些信息就非常重要,因为合约将根据这些信息来完成自身的业务逻辑。合约所能提供的业务,几乎是无穷无尽的,它的边界就是你的想象力,因为图灵完备的语言提供了完整的自由度,让用户搭建各种应用。白皮书举了几个例子,如储蓄账户、用户自定义的子货币等。 2013年年末,以太坊创始人Vitalik Buterin发布了以太坊初版白皮书,启动了项目。2014年7月24日起,以太坊进行了为期42天的以太币预售。2016年初,以太坊的技术得到市场认可,价格开始暴涨,吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。 [1] 自从进入2016年以来,那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。作为一种比较新的利用比特币技术的开发项目,以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是,以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来,传统行业的创新压力越来越大,甚至面临淘汰的风险。比特币网络事实上是一套分布式的数据库,而以太坊则更进一步,她可以看作是一台分布式的计算机:区块链是计算机的ROM,合约是程序,而以太坊的矿工们则负责计算,担任CPU的角色。这台计算机不是、也不可能是免费使用的,不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算,使用它至少需要支付计算费和存储费,当然还有其它一些费用。最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球top金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产。  智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高级的软件有可能用以太坊创建网络商店。区块链程序以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在2016年5月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育,菠菜等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。较知名的应用有:去中心化创业投资:The DAO用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental让独立艺术家在区块链上进行群众募资。社会经济平台:Backfeed。去中心化预测市场:Augur。物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理IP创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。虚拟宝物交易平台:FreeMyVunk。版权授权:Ujo Music平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。智能电网:TransActive Grid让用户可以和邻居买卖能源。去中心化期权市场:Etheropt。钉住汇率的代币:DigixDAO提供与黄金挂钩的代币,在2016年四月正式营运。Decentralized Capital提供和各种货币挂钩的代币。移动支付:Everex让外劳汇款回家乡。客户端软件以太坊的两个主要的客户端软件是Geth和Parity。企业软件企业软件公司也正测试用以太坊作为各种用途。已知有兴趣的公司包括微软、IBM、摩根大通。德勤和ConsenSys在2016年

RTC时钟芯片替换代码移植-IIC通信

1、问题 RTC时钟芯片由爱普生RX-8010SJ更换成大普INS5710A,两者都是IIC通信,更换大普芯片后时钟不走、以及报掉电错误。仿真分析原因是CPU和RTC芯片收发数据延时不够导致,根据爱普生芯片手册,8010收发数据不采取延时,但大普芯片采用同样方式读取不行(需要加延时) 2、RX-8010SJ手册说明(以读取数据为例) (1)寄存器读操作时序图 指定地址读操作: 1)CPU 发送开始条件[S] 2)CPU 传输RX-8010SJ 的从地址,用R/W 位设定写模式 3)检测从RX-8010

weixin_42851683的博客 2067

以太坊DAPP——truffle框架的使用

这里写自定义目录标题以太坊DAPP——truffle框架的使用操作系统安装Node.js和npm安装Truffle安装Ganache-cli新建一个空文件夹功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公...

Limbo_Y的博客 926

OMNET++ INET框架学习教程(一)

在自组网学习的道路上摸石头过河,帮你快速入门OIMNET++平台下的INET框架。

NLDwangzhe的博客 6565

Codex 命令行高效操作指南

本文详细介绍了Codex命令行工具的高效使用方法,包括安装配置、核心参数解析和实战技巧。通过`codex complete`、`codex explain`等指令,开发者可以快速生成代码、调试错误和重构项目,显著提升开发效率。特别推荐使用`--temperature`和`--max-tokens`参数优化生成结果。

weixin_29201313的博客 532

区块链(一): 以太坊基础知识

区块链是一个交易数据库,在网络中的众多计算机之间更新和共享。每次添加一组新交易时,即称为一个“区块”,区块链由此而得名。大多数区块链都是公有的,用户只能添加而不能删除数据。如果有人想更改系统上的任何信息或欺骗系统,那么他需要在网络中大多数计算机上都如此操作。那将是一个超级大工程。这使得已经建立的区块链(如以太坊)十分安全。以太坊是一种用于在不受中心化监管机构管控的环境下构建应用程序和组织、持有资产、进行交易和通信的技术。使用以太坊时无需提供任何个人详细信息,用户控制自己的数据以及共享内容。

AI时代光年 1万+

全景相机APP

以下是一款**全景相机APP**的完整源码,支持全景照片拍摄(多帧拼接)、全景预览、鱼眼矫正、图片保存/分享、360°全景查看等核心功能,基于Android原生Camera2 API(替代过时的Camera API) + OpenCV(图像拼接) + GLSurfaceView(全景预览)实现,适配Android 8.0+设备,可直接编译运行。runOnUiThread(() -> tvFrameCount.setText("已拍摄:" + frameCount + "帧"));// X轴旋转(上下)

寒寒豆豆软件公司的博客 181

全面解析 Truffle:以太坊智能合约开发的强力框架

通过 Truffle 框架,区块链开发者可以显著提升开发效率,优化合约部署和测试流程,并实现与前端应用的无缝对接。结合 Ganache 和 Drizzle 等工具,Truffle Suite 更是构建了一个完整的开发环境,为开发者从本地测试到生产部署提供了全生命周期的支持。在复杂区块链应用场景中,Truffle 的脚本化部署、灵活的测试工具以及强大的社区支持,使其成为开发去中心化金融(DeFi)、NFT 市场和 DAO 等项目的理想选择。

yoona333的博客 2195

1、掌握 Microsoft Dynamics 365 Business Central 开发全解析

本文全面解析了Microsoft Dynamics 365 Business Central的开发全流程,涵盖开发环境搭建、AL语言扩展开发、定制解决方案实现、高级开发技术、文件与报表处理、打印功能、调试与性能优化、API使用、Azure和Power Platform集成、DevOps实践以及生成式AI应用。同时探讨了开发工具技巧、常见问题解决、开发流程优化、团队协作要点及未来技术趋势,帮助开发者系统掌握Business Central开发核心技能,提升企业级应用开发效率与质量。

food6的博客 112

【Codecs系列】HEVC-SCC(一):核心技术介绍

DATE: 2020.6.4【Tags: HEVC SCC】 1、参考网址 2、SCC简介 3、HEVC-SCC核心技术

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 4806

区块链蓝图世界的展望-区块链4.0

@ 首先,在一个现代化的今天,所有先进思想一经出现,开始一段时间会低迷,一点遇到一个临界点,就会类似于井喷式发展,这也解释了 当今软件技术方面,为什么会迭代更新的这么快,更解释了为什么会存在很多投机者。 在接触比特币之后,个人觉得比特币的机制实现的一个电子货币的无法复制性,在一个小的场景下实现了区块链思想的最小落地话方案, 他的成功本质上意味着人性的的贪婪被无线的放大,贪婪什么,最终是 个人的利益...

boss2967的博客 1582

YOLO26全新改进 | 最全损失函数改进篇 | SIoU 、WIoU、GIoU、DIoU、EIOU、CIoU, InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数

🔥本文详细介绍了如何修改YOLO26中的损失函数。首先提供了完整的损失函数核心代码,包括WIoU_Scale类和各种IoU计算方法。然后分三步指导修改:1)替换metrics.py中的bbox_iou方法;2)修改loss.py中的iou计算代码;3)更新tal.py中的相关代码。文中特别强调了修改损失函数应在模型结构调整后使用,并提供了多种IoU损失函数的参数配置建议,包括SIoU、WIoU、GIoU等,可根据实际需求灵活选择搭配使用。

Ai缝合怪、助力小伙伴高效发论文 451

区块链知识总结

区块链知识总结 https://www.processon.com/view/link/6268a8297d9c0807282864ca

qq_50665031的博客 3414

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

一则鬼故事:如果全世界程序员都消失了

作者|轩辕之风O来源 |编程技术宇宙(ID:xuanyuancoding)程序员被鄙视?这两天,有一个话题引起了程序员的广泛讨论:年薪80W程序员相亲被鄙视!某知名互联网社区,一网...

程序人生的博客 304

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

初识区块链

                                         初识区块链 本文是我近期接触区块链之后的一些总结和感想,大部分内容都是从书上或博客看来,经自己整理和思考之后写下。文末有链接。   一、什么是区块链 区块链技术是近几年在金融科技领域一项非常重要的技术创新,而比特币是第一个应用区块链技术的项目,由化名为中本聪在2008年提出。但区块链(blockchain)这...

chenxz_的博客 463

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【web3实践 | 以太坊开发框架Truffle使用】

Truffle是一个面向以太坊的开发框架,提供一整套构建、测试、部署以及管理智能合约的开发工具。Truffle可以与以太坊节点交互,使开发人员能够在本地开发、测试和部署智能合约。Truffle提供了一个基于命令行的、易于使用的开发环境,可以通过Truffle来编写智能合约,进行本地测试和调试,进行远程部署,以及与以太坊网络进行交互。Truffle还提供了自己的智能合约编译器和构建管道,可以方便地构建、优化和管理智能合约的构建过程,减少了手动干预的需要。

鱼干的博客 4164

使用 Truffle Suite 构建以太坊 DApps

Truffle Suite 是一个用于构建以太坊 DApps 的开发框架。它包括 Truffle、Ganache、Drizzle 等工具,可以帮助开发者轻松地编写、测试和部署智能合约。在本文中,我们将介绍如何使用 Truffle Suite 来构建一个简单的投票应用程序。该应用程序允许用户创建新的投票,并为每个投票添加选项。其他用户可以投票并查看当前投票结果。

难办就别办的博客 679

【以太坊开发06】Truffle开发入门

truffle

欢迎来到胡桃木的博客 2713

四.智能合约与以太坊——构建去中心化应用

本文将以以太坊为范本,深入解构其与比特币截然不同的账户模型、作为系统“燃料”的Gas机制,以及支撑整个去中心化应用(DApp)生态的EVM和代币标准。对于开发者而言,掌握这些核心的架构组件,是理解和构建这个蓬勃发展的去中心化生态系统的第一步。,成功地将区块链从一个单一用途的支付网络,升维成了一个图灵完备的、无需许可的全球应用平台。、完全沙盒化的虚拟机,它为智能合约的执行提供了确定性、隔离性和资源约束的环境。从系统设计的角度看,以太坊可以被理解为一个巨大的、去中心化的。,但已经消耗的Gas对应的费用。

木鱼时刻的专栏 1509

一篇文章带你了解以太坊

首先,它显著提高了以太坊的交易处理能力和降低了成本,这可能会吸引更多的开发者和用户进入以太坊生态系统,从而推动对ETH的需求并影响其价格。以太坊区块包含交易列表和最新状态的副本,并且还存储其他信息,如区块编号和难度。以太坊区块链底层是一个类似比特币的P2P网络平台,但它提供了一个公开可接入的网络,任何人都可以接入并参与网络中数据的维护,提供运行以太坊虚拟机的资源。以太坊是一个强大的、多功能的区块链平台,不仅支持智能合约的运行,还为去中心化应用提供了广泛的可能性,是加密货币和区块链技术领域的一个重要里程碑。

DAppNode的博客 2234

以太坊深入理解

以太坊的挖矿产出 区块奖励 如果挖出区块,就会有出块奖励,类似于比特币,比如3个ETH 叔块奖励 在比特币中,如果挖出区块,但是如果不在最长的合法最长链上的时候,不会获得奖励。 但是在以太坊中,如果挖出区块,虽然不是在最长的区块链上,仍然有可能作为叔块被奖励ETH,但是这里的叔叔,不能类比于现实中的叔叔,这个叔块可能隔好几代,在以太坊中仍然会被叫做叔块。 叔块奖励引用 这里很容易理解,就是如果一个区块把叔块给加入进来,也会被奖励ETH 幽灵协议 改进比特币的共识协议 出块时间,比特币的出块时间是10

tttyyy556的博客 2020

以太坊(一)——概述

是一个有智能合约功能的公共区块链平台。允许任何人在平台上建立通过区块链技术运行的去中心化应用。就像比特币一样不受任何人控制的开放源项目,但与比特币不同的是,它解决了扩展性不足的问题,它十分灵巧简便,极具适应性。由很多节点组成,每一个节点就是运行以太坊客户端的计算机,每个节点都可以同步全部的账本可以转账和数据存储以太坊是公有链,所有人都可以随意加入和退出全世界计算器联网,每个节点运行一个以太坊客户端,就组成了以太坊网络。

奔跑的蜗牛_Kieasr 2097

以太坊学习(三) -- truffle搭建第一个区块链应用程序

以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架, 搭建truffle开发 环境,运行第一个区块链程序(Dapp)。系统信息:操作系统:Ubuntu 16.04truffle版本:v4.1.0node.js版本:v8.9.4npm版本:5.6.0ubuntu-16.04下安装truffle安装truffle依赖环境 NodeJS 访问http...

hpp24的专栏 6656

truffle init/unbox 中遇到的许多错误以及解决

truffle初始化的坑有很多: 1. truffle init报错 truffle init报错:Error: Truffle Box at URL https://github.com/truffle-box/bare-box.git doesn’t exist. If you believe this is an error, please contact Truffle support. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mWI7p9Ii-15990580

文杰的博客 3188

搭建一个私有区块链环境

最近在研究区块链。打算先搭建一个测试环境开始运行。这里记录整个搭建过程,供后来人参考。 整体上,分为三个步骤,安装相关软件,初始化系统,建立集群,以及最后一步,挖矿。 我们采用的是以太坊,相对其他区块链,这是一个成熟的环境。 虽然近期有硬分支的事件,对企业应用来说,功能上还算是比较完善的。安装部署1.安装 Go 环境如果机器无法上外网,还得配置一下代理。 Ubuntu配置代理的方式网上很多,这里不...

飞鱼计划 5815
上一篇: 以太坊Truffle框架搭建一气呵成无坑版教程
下一篇: 基于比原链开发Dapp(四)-bufferserver源码分析
ChainCode
ChainCode 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄11年 115粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值