以太坊如何通过构建智能合约来销售商品?

一起学:以太坊智能合约开发 课程介绍 无论在科技圈还是金融圈,“区块链”俨然成了最热的词汇。2016年,区块链写入了国家的十三五规划中;2017年,央行基于区块链技术的数字票据交易平台测试成功;同年,工信部发布了首个区块链参考架构标准。
经过2017年如火如荼的投资盛宴,区块链开始逐渐走向应用落地,业内都在积极探索使用场景。如金融领域的资产贸易、支付系统、金融服务,其他领域的电子商务、社交通讯、游戏娱乐等等。同时,BAT、迅... 阅读详情

如何通过构建以太坊智能合约来销售商品?这是个问题。

毫无疑问,比特币已经改变了我们看待和理解什么是金钱,价值以及最近由智能合约产生的所有权的方式。这很有趣,因为几乎每个人都听说过它或加密货币。来自许多业务领域的人,不仅仅是我们,IT工作者。

在本文中,我将展示我关于以太坊的第一份智能合约,这是我对区块链的个人研究的一部分。

以太坊智能合约

区块链适合初学者

有许多涉及区块链技术的概念,但在本节中我将尝试解释这种惊人的颠覆性技术。

顾名思义,区块链是使用它的哈希数据连接在一起的数据链的块,由用户的私钥签名。通常,这些块的大小限制为1MB,并且由于此限制而存储尽可能多的交易。

  • 概念1区块:它们是存储交易的块。认为这些块是具有一些元组的表,每个块都存储交易。

区块

  • 概念2不对称加密,公钥和私钥对:每个人都可以访问我们的公钥,只需我们访问我们的私钥即可。并且,非对称加密意味着:我们使用其中一个密钥编码,它只能与另一个密钥进行解码。没有例外。

真实性:如果我们想签署数据,我们使用私钥进行编码,因为每个人都可以使用我们的公钥解码并安全地认证我们。但是没有人可以改变数据并再次签名,因为它会被命运所拒绝。当真实性成为问题时使用。这是区块链的情况 。

签署数据以保证真实性

  • 使用私钥,所有者对数据进行编码,或者更好地对数据进行签名 。 通过此操作,所有者保证没有人伪造他或她的身份。

  • 使用公钥,每个人都可以解码数据,或者更好地检查 签名 。 通过这种操作,起源就是我们所期待的。

  • 概念3区块链的不可侵犯性质在于链接块的机制:当生成新块时,从当前块的数据生成哈希,包括它的签名。然后,生成新块,将来自前一块的hash与当前块的数据组合,并生成新的hash并使用用户的私钥进行签名,依此类推。如果有人试图更改块的数据以伪造事务,则他或她必须在整个网络开始使所有这些重新生成的块无效之前快速生成所有后续块。

如同暗夜里一开始没有灯…

一切都从创世块开始,这个块负责启动区块链网络并设置许多参数值,例如挖掘代币的难度。

如何创建链?

基于来自当前块的所有数据(包括签名),生成hash并将其包括在新生成的块的头中。此时此新块将成为当前块并开始注册交易。

很惊人!是不是?

案例分析

我选择了一个非常常见的用例,为使其易于理解,只留下了智能合约逻辑和技术细节的实现。

企业对企业——B2B

  • 零售商(retailer)从制造商(manufacturer)处订购货物。制造商检查库存数量,收集产品,包装,准备和运输。零售商和制造商有可信赖的商业关系。
  • 货物(shipment)由制造商要求的快递公司(courier)发货,他们也有可信赖的商业关系。
  • 零售商(retailer)和快递(courier)之间可信赖的商业关系(relationship)是可传递的(transitive),因为为制造商提供了共同的关系。
  • 值得信赖(trusted)的商业关系(relationship)非常重要,因为传统市场需要这种关系。从零售商到制造商的付款是在收到货物后几天发生的。并且,从发货人到快递员的付款在交货确认后几天发生。如果没有信任,他们就不会互相信任,也不会做出交易。这并不会促进最佳价格,服务和产品的竞争。
概括

最精细的商业交易由三部分组成:买方(buyer),货物(goods)和卖方(seller)。最基本的过程是转移货物的所有权以换取现金,从卖方到买方。你怎么看待这件事?

我们可以将此模型称为:从卖家购买商品所有权(buy-goods-ownership-from-seller)或简写为bogos

购买-所有权-商品-卖方图表模型

让我展示一些例子,然后翻译成bogos模型。

  • B2C——商品:John想要一部新的智能手机,他去了当地的市场并挑选了最好的智能手机并用他的信用卡付款。在这个例子中,“John”是买方buyer,“smartphone”是商品goods ,“local mart”是卖方seller。在John支付之前,本地市场拥有智能手机,付款后所有权转移给他。
  • B2C——服务:Maria很饿,她去了妈妈的意大利面并订购了很多意大利面条。厨师接受她的订单细节,准备菜肴,服务员为此服务。当Maria满意时,她付账并回家。在这个例子中,“Maria”是买家buyer,“dish”是商品goods,“Mama’s Pasta”是卖家seller。支付后,“菜”的所有权从“Mama’s Pasta”转移到“Maria”。
  • C2C——货物:Joseph在卖他的车。几周后,Berta想要从他那里买车。他们完成交易,Berta支付了有价值的价值,而Joseph将所有权转让给了她。 在这种情况下,“Berta”是买方buyer,“car”是货物goods而“Joseph”是卖方seller。支付后,所有权转移到“Berta”。
  • B2B——商品:Jong,买家buyer,是一家电子产品经销商,有一家商店,他从卖家北京公司seller订购商品goods。当货物准备好运输时,它们被打包,一名叫海外的快递员将包裹运给Jong。当他收到货物和发票时,将执行付款。

智能合约解决方案

正如我们在案例研究部分所看到的,参与者之间的信任是传统业务的主要关注点。这个概念证明的目标是使用以太坊区块链网络上的智能合约建立一种无信任的方式在参与者之间进行交易。

带智能解决方案的序列图

为了定义一系列交易,外部交互和支付,我提出了案例研究的新流程。

  • 制造商(Manufacturer)专门为零售商(Retailer)的帐户部署智能合约。
  • 零售商(Retailer)在(Manufacturer)的智能合约中订购产品X,其数量等于N.通过所谓的订单发送活动,制造商(Manufacturer)可以接收订单数据并对其进行处理。
  • 制造商(Manufacturer)寻找Courier智能合约的最佳运费。
  • 制造商(Manufacturer)发送订单价格,零售商(Retailer)通过发送的称为价格的事件收到订单价格。
  • 制造商(Manufacturer)发送装运价格,零售商(Retailer)通过发送的称为价格的事件接收此价格。
  • 零售商(Retailer)执行总额的安全支付:订单价格+装运价格。这些代币进入智能合约账户并等到那里直到交货。
  • 制造商(Manufacturer)发送包含交货日期和一些其他数据的发票。零售商(Retailer)通过发送的称为发票的事件接收发票数据。
  • Courier在将订单交付给零售商(Retailer)后 ,标记了智能合约上的订单。快递员可以是机器人,也可以是无人机。想想我!今天我们有很多可能性。
  • 智能合约为订单支付制造商的费用。
  • 智能合约向快递公司(Courier)支付为了发货。

好的,足够的理论,让我们看看如何写代码!

开发工具

为了加速我们的发展,有一个很好的选择叫做Truffle Framework。这个框架有很多东西可以帮助我们在以太坊编程语言Solidity中开发智能合约。

要快速查看Solidity,我建议你访问以下网站:http://solidity.readthedocs.io/en/develop/solidity-by-example.html

Truffle

Truffle是一个用于编译,测试和部署用Solidity编写的智能合约到以太坊区块链的工具。要使用它,我们需要nodejs。然后,检查已安装node tools的版本。

如果你的计算机中没有nodejs,请按照这些说明操作 。

$ node -v 
v6.11.5 

$ npm -v 
3.10.10 

使用以下命令全局安装Truffle。

$ sudo npm install -g truffle 

检查Truffle的版本输入truffle version。

$ truffle version
Truffle v4.0.5 (core: 4.0.5)
Solidity v0.4.18 (solc-js)
ganache

全局安装ganache CLI以在localhost上运行私有以太坊区块链网络。

$ sudo npm install -g ganache-cli

然后,尝试在终端中输入ganache-cli。你必须在localhost上看到类似于以下内容的8545端口。

$ ganache-cli
Ganache CLI v6.0.3 (ganache-core: 2.0.2)
Available Accounts
==================
(0) 0x8baae15bf75ffdb6fcde77ecc4e2aa8063ad820c
(1) 0x1f6c6fa7aceb8124e9db0bd283dbe99489cd7b80
(2) 0x85e1e869e57004618481539c1ee8b2a55195892b
(3) 0x05dd0af1306a4537ca25e651f97df23c68d9b2d7
(4) 0x84a9964a2a9d8136498b26f27311c1ecd244733a
(5) 0x79e21b3f20eca854fa6ca822a8550b1fbdda3c30
...
HD Wallet
==================
Mnemonic:      stereo pistol pulp advance same transfer eight deal unhappy charge attitude lock
Base HD Path:  m/44'/60'/0'/0/{account_index}
Listening on localhost:8545

开始之后,我们有十个账户(或钱包或地址),每个账户余额为100.00ETH,还有一个完整的工作和私人区块链,可以玩,试错,用不完的以太币,做我们想做的一切,直到获得稳定的代码。

你想要一个更直观的方式来看看发生的事情,然后安装Ganache而不是ganache-cli。这个工具可以完成ganache-cli所做的工作,加上一个非常酷的GUI可以使用鼠标点击。

这些工具,ganache-cli和Ganache GUI在关机后不能维护状态,它们需要我们在每次重启时重新部署智能合约。

MyEtherWallet是一个对初学者来说很有趣的GUI,它比Ganache GUI更直观,因为我们可以在下拉列表中选择要调用的函数。它对于演示和截屏也非常有用。

MyEtherWallet只是与以太坊区块链交互的附加工具。我们必须先运行ganache-cli或Ganache GUI。在此处下载包,解压缩并在你喜欢的浏览器中打开index.html文件,并添加指向正在运行的区块链的自定义节点。

设置

通过本文,我不会假装展示如何成为Solidity程序员,但如果你想要启动免费的项目,请按以下步骤操作。

$ mkdir my-contract
$ cd my-contract
$ truffle init
Downloading...
Unpacking...
Setting up...
Unbox successful. Sweet!
Commands:
Compile:          truffle compile
  Migrate:        truffle migrate
  Test contracts: truffle test

要有效地部署合约,我们必须在migrations目录中创建迁移文件。下面我向你展示负责部署Deal.sol合同的2_deploy_contract.js文件的内容。通过这种方法,我们可以将参数传递给合约构造函数以及许多其他可能性。

“use strict”;
var Deal = artifacts.require(“./Deal.sol”);
module.exports = function(deployer, network, accounts){
 deployer.deploy(Deal, accounts[1]);
};

创建一个工作目录。以下命令将在你的主目录中创建区块链目录。

$ mkdir -p ~/blockchain
$ cd ~/blockchain

来吧看看代码。将源代码从https://github.com/fabiojose/ethereum-ex克隆到~/blockchain目录中。

$ git clone https://github.com/fabiojose/ethereum-ex.git
$ cd ethereum-ex

安装依赖项。

$ npm install

一个vanilla Truffle项目不需要npm安装,但如果我们想要更多的库,只需创建一个package.json文件并将依赖项放在那里。

构建和部署

要执行Truffle命令,我们需要访问我们的私有区块链。为此,编辑truffle.js文件,添加以下行。

module.exports = {
  networks: {
    development: {
      host: "localhost",
      port: 8545,
      network_id: "*"
    }
  }
};

默认情况下,Ganache GUI在端口号7545上绑定。如果你选择它而不是ganache-cli,请更改为此端口。在Solidity中,我们需要编译.sol文件。为此,我们只需在项目目录中键入以下命令即可:

$ truffle compile
Compiling ./contracts/Deal.sol...
Writing artifacts to ./build/contracts

要部署我们编译的.sol文件,我们必须使用migrate命令。此命令将在truffle.js文件中配置的网络中部署智能合约。

$ truffle migrate
Using network 'development'.
Running migration: 1_initial_migration.js
  Deploying Migrations...
  ... 0xa74ff1912d2a53a3d77d2678e9fc617f9baa838a46e57a4182d1da6ff4a0cc4f
  Migrations: 0xd86037f19f3adac9bdf3331298b3e9709baabb2e
Saving successful migration to network...
  ... 0x221758e993424fa81581100e2cdd278ed45f9c84820f3ced69362813e409a098
Saving artifacts...
Running migration: 2_deploy_contracts.js
  Deploying Deal...
  ... 0x16f5149e71dd77f8891278e824c9d6e477f7408253fbc2f36560da4aa2a7c6f0
  Deal: 0x3c7396d30e70b4deec5b33582b59766249b6ea83
Saving successful migration to network...
  ... 0x0631419bcf68146a50f524b1d6735f62fca5a825858e57458d4f8cf45e0e70aa
Saving artifacts...

要更好地了解migration,请阅读:http://truffleframework.com/docs/getting_started/migrations

测试

单元测试?:是的!我们可以通过智能合约进行单元测试。毕竟,一个简单的错误可能导致我们丢失所有代币。

在幕后我们有Mocha和Chai,主要区别在于使用关键字contract代替describe创建测试场景。

要执行测试,只需在项目目录中输入以下命令即可。

$ truffle test
Using network 'development'.
Contract: Deal
    ✓ should the seller account owns the contract (72ms)
    ✓ should the second account was the buyer (72ms)
    ✓ should first order was number 1 (154ms)
    ✓ should the shipment price was set (189ms)
    ✓ should the order's price was set (169ms)
    ✓ should the safe pay was correct (218ms)
    ✓ should the contract's balance was correct after the safepay (186ms)
    ✓ should the first invoice was number 1 (177ms)
    ✓ should the invoice 1 it is for order 1 (190ms)
    ✓ should the courier was correct (186ms)
    ✓ should the contract's balance was correct after the delivery (268ms)
11 passing (2s)

可以像在本文中那样在JavaScript中实现测试,并在Solidity中进行测试。你可以在此处获得有关测试的更多详细信息:http://truffleframework.com/docs/getting_started/testing。

编码

为了实施解决方案,我应用了泛化并使用这些实体:买方(buyer),卖方(seller),货物(goods),订单(order),发票(invoice)和称为Deal的智能合约。你可以通过克隆源代码来查看具体实现。

卖方为每个想要与之进行交易的买方部署一个智能合约,即交易实例。为此,我们需要一个带有一个参数的构造函数constructor:Buyer帐户地址。

/// The smart contract’s constructor 智能合约的构造函数 
function Deal(address _buyerAddr) public payable {
 
  /// The seller is the contract’s owner 卖方是合约的所有者
  owner = msg.sender;
  buyerAddr = _buyerAddr;
}

请注意,与许多语言一样,Solidity的构造函数具有相同的类名,或同名的合约。

contract Deal {
  /// ...
}

要将参数传递给构造函数,我们使用位于migrations/2_deploy_contracts.js的部署文件来执行此操作,这是我们调用truffle compile或truffle test时由migrations/2_deploy_contracts.js使用的.js文件。

下面我们有migration/2_deploy_contract.js的内容。在第3行,我们需要为智能合约加载我们的Solidity实现。在第6行,我们使用由Truffle注入的部署实例来执行Deal的部署。而deploy()函数的第二个参数将传递给第一个构造函数参数。在这种情况下,我们从ganache提供的帐户数组中传递第二个帐户。

1. “use strict”;
2.
3. var Deal = artifacts.require(“./Deal.sol”);
4. 
5. module.exports = function(deployer, network, accounts){
6.   deployer.deploy(Deal, accounts[1]);
7. };

要发送商品订单,我们有sendOrder功能。它是改变合约状态的函数中无用的返回数据,因为它们启动将异步处理(或挖掘)的交易。只是查询合同状态的函数可以返回数据。

  /// The function to send purchase orders 发送采购订单的功能
  /// requires fee 需要费用
  /// Payable functions returns just the transaction object, with no custom field. 应付款函数只返回交易对象,没有自定义字段。
  /// To get field values listen to OrderSent event. 要获取字段值,请监听OrderSent事件。
  function sendOrder(string goods, uint quantity) payable public {
    /// ...
  }

要获取订单号,在执行sendOrder之后我们必须监听事件。在这种方法的情况下,我们必须使用以下签名来监听OrderSent。

/// Event triggered for every new order 为每个新订单触发事件
event OrderSent(address buyer, string goods, uint quantity, uint orderno);

实际上,对于每个更改合同状态的函数,都会触发事件以获取新的数据状态。对于序列图中的每个阶段,我们都有一个执行它的方法:sendPrice,sendSafepay,sendInvoice和delivery。零售商是买方,制造商是卖方。

完整的代码被推送到我的Github:https://github.com/fabiojose/ethereum-ex 。

克隆它,玩得开心!

最后的话

现在是时候体验智能合约的功能,试图解决现实世界的问题。去吧,试试看,让我知道!我们可以分享我们的实验。

关于模式

在这一点上,我们应该关注一些模式。我注意到这两个与部署方法有关。

  • 部署一次,多次使用:这个工作就像一个应用程序,因为我们部署了一个智能合约版本并多次使用直到销毁它。这是本文使用的方法。
  • 一次部署,一次使用:在这种方法中,我们部署了一个智能合约的版本,一次性使用它,我们需要一个非常具体的目标并在最后销毁。

参考

======================================================================

分享一些以太坊、EOS、比特币等区块链相关的交互式在线编程实战教程:

  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • tendermint区块链开发详解,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是原文如何通过构建智能合约来销售商品

基于以太坊区块链的农产品销售系统 solidity 以太坊 truffle.js构建系统 农产品销售成为了很多农产品商家的一项重要的创收项目。传统的销售方式采用了摆摊销售和市场的农产品的批发,在销售农产品方面不是很方便,因此采用了网络的方式进行销售。也是电子商务发展今天的一种趋势,本平台利用以太坊区块链技术进行设计开发,进行管理,建立了网站,前台的销售和后台的管理,本平台功能如下: 网站前台: 产品展示:以列表的形式展示了农产品信息,包括商品的名称、类别、价格和图片等,通过产品信息的展示,方便了用户查看,也在农产品的推广方面起到了一定 阅读详情

相关推荐

eth-listener:以太坊事件的监听器

以太坊节点监听器 路线图: 设置环境(摩卡,测试,ganache,linting) 使用ws侦听特定地址下的所有交易(从最新的块开始) 创建交易历史

以太坊(Ethereum) - 部署智能合约到Ganache

章节以太坊(Ethereum) – 是什么 以太坊(Ethereum) – 什么是智能合约 以太坊(Ethereum) – 以太币 以太坊(Ethereum) – 虚拟机(E.V.M.) 以太坊(Ethereum) – 分布式应用(DApp) 以太坊(Ethereum) – 账号(地址) 以太坊(Ethereum) – 虚拟机架构 以太坊(Ethereum) – 网络节点 以太坊(Ethereu...

吴吃辣 1772

基于区块链技术的商品交易智能合约设计.pdf

#资源达人分享计划#

如何通过以太坊构建智能合约来销售商品

如何通过构建以太坊智能合约来销售商品?这是个问题。 毫无疑问,比特币已经改变了我们看待和理解什么是金钱,价值以及最近由智能合约产生的所有权的方式。这很有趣,因为几乎每个人都听说过它或加密货币。来自许多业务领域的人,不仅仅是我们,IT工作者。 在本文中,我将展示我关于以太坊的第一份智能合约,这是我对区块链的个人研究的一部分。 区块链适合初学者 有许多涉及区块链技术的概念,但在本节中我将尝...

rejames的博客 977

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1913

智慧城市项目实战:如何将你的地理数据从城市坐标系(如上海2000)转换到国家CGCS2000?

本文详细介绍了智慧城市项目中地理数据坐标系转换的全流程解决方案,重点讲解如何将城市坐标系(如上海2000)转换到国家CGCS2000。通过七参数布尔莎模型、ArcGIS Pro、QGIS开源方案及Python编程实现,帮助实施团队解决坐标系不统一的技术难题,确保空间分析精度。

weixin_28725949的博客 307

如何通过构建以太坊智能合约来销售商品

如何通过构建以太坊智能合约来销售商品?这是个问题。 毫无疑问,比特币已经改变了我们看待和理解什么是金钱,价值以及最近由智能合约产生的所有权的方式。这很有趣,因为几乎每个人都听说过它或加密货币。来自许多业务领域的人,不仅仅是我们,IT工作者。 在本文中,我将展示我关于以太坊的第一份智能合约,这是我对区块链的个人研究的一部分。 区块链适合初...

weixin_33775572的博客 252

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2123

以太坊智能合约

转载如下: 如何通过构建智能合约来销售商品 原文 https://medium.com/coinmonks/build-a-smart-contract-to-sell-goods-6cf73609d25 代码 https://github.com/fabiojose/ethereum-ex 翻译 http://blog.hubwiz.com/2018/12/12/ethereum-smartcontract-sell/ 试图解决现实世界的问题 ...

weixin_43520099的博客 170

MFC使用Websocket通讯介绍和实例(附完整源码)

踩坑点,下载了好几个boost版本编译,经常出问题,后来搜索了好久资料才发现如下评论:WebSocket++0.8.2 has been tested through Boost 1.72。WebSocketpp依赖于boost,因此在使用WebSocketpp前需要编译Boost;所以我们直接下载Boost 1.72的windows版的进行安装,安装完成还需要编译;WebSocketpp也叫WebSocket++;服务编译好之后,使用。

weixin_42530684的博客 1171

保姆级教程:在RK3588开发板上配置USB-C PD充电(基于HUSB311芯片与DTS详解)

本文详细介绍了在RK3588开发板上配置USB-C PD充电的完整流程,重点解析了HUSB311芯片的硬件原理与DTS安全配置。通过实战案例和调试技巧,帮助开发者避免常见错误,实现稳定可靠的Type-C PD快充功能,适用于从基础开发板到工业设备的多场景需求。

weixin_42552315的博客 522

到底什么是区块链?什么是智能合约?什么是以太坊?

web3!

xiaoMa的博客 2423

泛微ecology9二次开发-附件上传接口实战:从表单创建到数据库存储解析

本文详细解析了泛微ecology9二次开发中的附件上传接口实战,从测试环境搭建、数据库表结构解析到接口代码实现,提供了全面的开发指南。重点介绍了文件上传的核心逻辑、常见问题排查及高级应用场景,帮助开发者高效实现附件上传功能并优化系统性能。

weixin_30836759的博客 478

什么是智能合约?

大家一直对智能合约很好奇,都说智能合约很强大,到底强大在什么地方呢?其实,通过这次的整理,我也是对智能合约的概念以及运行原理有了更深一层的了解,而对于智能合约为何如此强大这一问题还是一知半解,如果有对智能合约比较通透的大佬,能够指点迷津的话,真是感激不尽呢~~ 为了整理这些,我也是花尽了心思呀,如果有不妥之处,还望大家能够提出来,咱们一起讨论一下。 目录 一、什么是智...

zqq_2016的博客 4901

[VT虚拟化驱动]安装DPC回调检测CPU对VT的支持

文章目录前言一、驱动基本框架二、安装DPC回调三、检测CPU对VT的支持本章代码def.h:DriverEntry.cpputil.cpp 前言 对于VT的介绍网上有很多详细的介绍,这里不再赘述,只需要知道它有比操作系统还高的权限,可以利用这一点进行某些操作,如内存隐藏, 无痕HOOK ,MSR HOOK, 调试或者反调试, 这里直奔主题 一、驱动基本框架 虚拟机设置里虚拟化引擎设置: 新建一个空的WDM工程,平台设置为x64平台,右键属性——>Inf2Cat——>Run Inf2Cat设置

吾无法无天的博客 3914

VI4302 1D dToF Sensor助力无人机定高避障:一场前所未有的飞行体验

另外,传感器因测量精度不够,产生的高度信息误差,会导致无人机无法精确定高,影响飞行稳定性和安全降落。芯视界于2022年发布的全新一代基于单光子探测技术的dToF激光雷达传感器芯片-VI4302,采用单电源低功耗系统,实现高性能测距、高稳定性,同时具备极强抗阳光能力以及兼容性等强大优势。无人机可以根据传感器提供的信息,快速调整飞行路径,避开潜在的障碍物,确保平稳的飞行。VI4302 1D dToF Sensor能够以极高的精度测量物体与无人机之间的距离,实现毫米级别的测量精度。⭐ 体型小巧,灵敏度高。

致力于lidar应用开发 625

既有比特币,为什么还要有以太坊?聊聊以太坊

以太坊的出现不仅丰富了加密货币生态,更重要的是开创了智能合约和去中心化应用的新时代。它通过可编程性、智能合约和丰富的生态系统,解决了比特币无法满足的需求。尽管面临挑战,以太坊仍然是区块链技术发展的重要推动力,其未来发展将持续影响整个区块链行业。

m0_69239579的博客 2273

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

以太坊原理

fill:#333;color:#333;color:#333;fill:none;技术革命智能合约平台经济创新DeFi生态系统社会变革去中心化治理文化创新NFT数字资产全球可编程货币。

m0_67298586的博客 1355

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

灰度报告:从货币、商品、资产三大角度诠释以太坊价值

以太坊自2015年推出以来,就一直得到大多数投资者的密切关注,随着以太坊网络上活动的增加,投资者对投资案例以及如何评估ETH的价值感到好奇。 作为第二大区块链网络,以太坊和比特币网络享有共生关系,从外部世界获取流动性、思想共享和价值。以太坊创建了一个信任的环境,其强大网络确保应用程序根据编码的逻辑运行,不需要第三方或没有干扰的可能性,这也是以太坊得以在历史上是繁荣发展的先决条件。 比特币是数字生态系统中价值的首选存储方式,被广泛称为数字黄金,而以太坊虽然已经成为领先的金融基础设施,但其称号却不太清楚。本

tuoniaoQKL的博客 804

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

区块链 智能合约 执行原理

一、智能合约 1. 什么是智能合约 从技术角度来说,智能合约可以看作一种计算机程序,这种程序可以自主地执行全部或部分和合约相关的操作,并产生相应的可以被验证的证据,来说明执行合约操作的有效性。 智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 简单理解的话,你可以把自动售货机看成一个销售商品的智能合约,执行的就是你和机器主人之间关于如何购买一瓶饮料的合约。 2. 为什么要智能合约 智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可,那么...

软件工程小施同学 的专栏 6019

基于区块链的商品信息追溯平台(源码+论文+部署+安装)

随着全球供应链复杂化,传统溯源方式已无法满足高效、可信的管理需求。区块链技术的去中心化、不可篡改、透明可追溯特性,成为解决上述痛点的关键支撑;同时,政策层面(如中国 “推动区块链技术和产业创新发展”)与市场需求(消费者对产品安全、版权保护的关注提升)共同推动新型溯源体系的研发,本系统正是在此背景下,基于以太坊区块链技术构建去中心化商品信息追溯平台。

知识分享 1304

元宇宙的智能合约有哪些实际应用案例

总结来说,元宇宙中的智能合约已经实现了广泛的应用,包括土地交易、智能物品的创建和交互、虚拟商品的销售和交易、游戏内资产和奖励系统、租赁和租赁协议以及数字身份和权限管理等。在Decentraland中,用户可以创建智能物品(Smart Items),这些物品是3D可交互前端组件,并且它们的交互内容可以由以太坊智能合约维护。在元宇宙的游戏中,智能合约被用于管理游戏内资产(如游戏币、装备、角色等)的发行、交易和转移。元宇宙中的虚拟商品,如虚拟服装、艺术品、家具等,都可以通过智能合约进行销售和交易。

DAppNode的博客 833

“基于以太坊的去中心化电商DApp”程序说明文档

目录 文章目录目录一、项目概述1.1 项目名称1.2 项目用途二、需求分析三、系统功能模型四、系统设计4.1 总体设计4.2 架构设计五、代码实现5.1 合约部分代码5.2 HTML代码5.3 JavaScript代码 一、项目概述 1.1 项目名称 基于以太坊的去中心化电商DApp 1.2 项目用途 使用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台类似淘宝的在线...

Never give up! 2280

区块链简史(七):区块链技术2.0—以太坊,摆脱数字货币的枷锁

欢迎来到懒区块,本文由懒区块整理撰写,不经过允许,切勿转载。本系列有十二篇文章,这十二篇文章介绍了区块链技术的简史、应用、预测和展望。您的每一次关注、转发、收藏都是我们更新优质内容的源动力。各位小伙伴们晚上好,前一篇文章中,我们简单了解了比特币网络是如何解决“双重消费”和“拜占庭将军”问题,今天我们来聊下在区块链领域十分出名的开源项目——以太坊。作为共有区块链平台,以太坊可以说将比特币针对数字货币...

lanqukuai的博客 3085

以太坊·食品溯源案例

以太坊·食品溯源案例 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 本文作者最近在找工作,有意向致电 13113668890 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netk...

weixin_34293246的博客 3370

区块链笔记:以太坊开发项目示例工程

简单的设计 商品管理(简单示例) 商品登记 查询 上架/下架 相关智能合约的编写 // 指定编译环境版本的 pragma solidity >=0.4.21 <0.6.0; /** * owned 是合约的管理者 */ contract owned { address public owner; // 变量账户地址 /** * 初始化构造函数 ...

Wang的专栏 1182
上一篇: 以太坊DAO之股东协会
下一篇: 【Flutter入门教程】从零构建电商应用(一)
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值