GitHub - truffle-box/pet-shop-box: A box containing all you need to get started with our Pet Shop tutorial.
官网教学:https://www.trufflesuite.com/tutorial
宠物店的收养跟踪系统
适用人群具有以太坊和智能合约基础知识、具有一些简答的 HTML 和 JavaScript 知识但不熟悉 dapp 的人。
为以太坊的测试框架和资产管道,致力于使以太坊开发者的生活更容易。
由Consensys公司开发和维护
特点内置智能合约编译、链接、开发和二进制管理。快速开发的自动化合约测试脚本、可扩展性部署和迁移框架。用于部署到任意数量的公网和私网的网络管理基于EthPM和NPM,并使用ERC190标准进行包管理为合约通信提供交互式控制台为紧密集成提供可配置的构建管道在Truffle的环境中执行外部的运行脚本
下载Node.js v8+ LTS 和npm
(npm是Node 自带)
MetaMask
Ganache
(http://truffleframework.com/ganache)
注意:如果您在没有图形界面的环境中进行开发,您也可以使用Truffle内置的个人区块链Truffle Develop来代替Ganache。您将需要更改一些设置(例如区块链运行的端口)以适应 Truffle Develop 的教程。
它是一个以太坊的个人开发环境,你可以在上面部署合约、开发程序和进行测试。
后续步骤:1.迁移路径:将与HardHat合作提供描述从Truffle到HardHat的迁移过程的文档;2.产品支持:未来90天内,将通过Zendesk、Truffle GitHub、Ganache GitHub和Consensys Discord提供Truffle和Ganache的支持;3.代码库的未来:从2023年12月20日起,Truffle和Ganache代码库将作为公共存档可供使用,这为开发人员迁移到HardHat和其他解决方案提供了约90天的时间。
Consensys建议在3个月的弃用期内停止使用Truffle和Ganache,以确保正在使用的工具得到积极维护并更新依赖项。此外,Consensys称Truffle的工程和产品团队已在内部转向MetaMask和Infura中以开发人员为中心的产品,他们将继续致力于支持Web3构建器。
分析两个功能
收养宠物 检索采用者adopt
getAdopters
在 Solidity 中,必须指定函数参数和输出的类型。在这种情况下,我们将接受一个petId(整数)并返回一个整数。我们正在检查以确保petId其在我们的数组范围内adopters。Solidity 中的数组从 0 开始索引,因此 ID 值需要在 0 到 15 之间。我们使用该require()语句来确保 ID 在范围内。如果 ID 在范围内,我们就会将调用的地址添加到数组中adopters。调用该函数的人或智能合约的地址用 表示msg.sender。最后,我们返回petId所提供的信息作为确认。 由于adopters已经声明了,我们可以简单地返回它。请务必将返回类型(在本例中为 的类型adopters)指定为address[16] memory。memory给出变量的数据位置。函数声明中的关键字view意味着该函数不会修改合约的状态。 汇编truffle compile
var Adoption = artifacts.require("Adoption");
module.exports = function(deployer) {
deployer.deploy(Adoption);
};
回到我们的终端,将合约迁移到区块链。truffle migrate
应该看到类似于以下内容的输出:
}
}
// 旧版dapp浏览器
else if (window.web3) {
App.web3Provider = window.web3.currentProvider;
}
// 如果未检测到注入的web3实例,则返回Ganache(就我们测试用的)
else {
App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
}
web3 = new Web3(App.web3Provider);
return App.initContract();
},
//实例化合约
initContract: function () {
$.getJSON('Adoption.json', function (data) {
// 获取必要的合约工件文件,并使用@truffle/contract进行实例化
var AdoptionArtifact = data;
App.contracts.Adoption = TruffleContract(AdoptionArtifact);
// 为我们的合同设置提供商
App.contracts.Adoption.setProvider(App.web3Provider);
// 使用我们的合同取回并标记收养的宠物
return App.markAdopted();
});
return App.bindEvents();
},
bindEvents: function () {
$(document).on('click', '.btn-adopt', App.handleAdopt);
},
//领养宠物并更新 UI
markAdopted: function () {
//收养实例
var adoptionInstance;
App.contracts.Adoption.deployed().then(function (instance) {
adoptionInstance = instance;
//使用call()允许我们从区块链读取数据,而无需发送完整的交易,这意味着我们不必花费任何以太币。
return adoptionInstance.getAdopters.call();
}).then(function (adopters) {
for (i = 0; i < adopters.length; i++) {
if (adopters[i] !== '0x0000000000000000000000000000000000000000') {
$('.panel-pet').eq(i).find('button').text('Success').attr('disabled', true);
}
}
}).catch(function (err) {
console.log(err.message);
});
},
//处理领养()函数
handleAdopt: function (event) {
event.preventDefault();
var petId = parseInt($(event.target).data('id'));
var adoptionInstance;
web3.eth.getAccounts(function (error, accounts) {
if (error) {
console.log(error);
}
var account = accounts[0];
App.contracts.Adoption.deployed().then(function (instance) {
adoptionInstance = instance;
// 通过发送帐户执行采用作为交易
return adoptionInstance.adopt(petId, { from: account });
}).then(function (result) {
return App.markAdopted();
}).catch(function (err) {
console.log(err.message);
});
});
}
};
$(function () {
$(window).load(function () {
App.init();
});
});
准备好ganache和metamask
手动添加网路http://127.0.0.1:7545
启动本地网络服务器:
npm run dev
附【Truffle】 | Gamma
相关知识
使用truffle部署以太坊智能合约到区块链
区块链案例实践报告
第六课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)
第七课 技术小白如何开发一个DAPP区块链应用(以宠物商店为例)
truffle 宠物店开发教程
Web3.0宠物商店实战教程:ETH智能合约入门到实践
以太坊宠物商店
Truffle & Web3.js 教程:教你开发、部署第一个去中心化应用(Dapp)
区块链DAPP
解析宠物商店pet
网址: 逸学区块链【Truffle】宠物商店教程 https://m.mcbbbk.com/newsview892699.html
上一篇: TokenPocket宠物大作战 |
下一篇: 区块链宠物热潮迭起:一时投机还是 |