智能合约dapp开发技术主要由以太坊区块链网络提供支持,该网络提供了一系列的智能合约技术,这些智能合约可以让开发者快速、安全地构建出功能强大的dapp。智能合约dapp开发技术主要包括以太坊智能合约语言Solidity,以太坊智能合约框架Truffle,Web3.js,以太坊区块链浏览器Mist等
web3.0的发展趋势是创建分散的网络、协议和应用程序,以无信任和安全的方式促进价值和信息的交换。
智能合约:它们是存储在区块链上的计算机程序,在满足预定条件时运行,智能合约是用Solidity语言编写的。
#include<stdio.h>
#include<MNN/ImageProcess.hpp>
#include<MNN/Interpreter.hpp>
#define MNN_OPEN_TIME_TRACE
#include<algorithm>
#include<fstream>
#include<functional>
#include<memory>
#include<sstream>
#include<vector>
#include<MNN/AutoTime.hpp>
#define STB_IMAGE_IMPLEMENTATION
#include"stb_image.h"
#include"stb_image_write.h"
using namespace MNN;
using namespace MNN::CV;
/*
MNN执行推理可以分为四步:
创建会话
输入数据
运行会话
获取输出
*/
int main(int argc,const char*argv[]){
if(argc<3){
MNN_PRINT("Usage:./pictureRecognition.out model.mnn input0.jpg input1.jpg input2.jpg...n");
return 0;
}
//用智能指针通过argv[1]创建解释器Interpreter,是模型数据的持有者
std::shared_ptr<Interpreter>net(Interpreter::createFromFile(argv[1]));
//config是会话session的配置参数
ScheduleConfig config;
config.type=MNN_FORWARD_AUTO;
//BackendConfig bnconfig;
//bnconfig.precision=BackendConfig::Precision_Low;
//config.backendConfig=&bnconfig;
//通过解释器net,创建session,默认config参数下,函数会根据模型结构自动识别出调度路径、输入输出
auto session=net->createSession(config);
//通过net和session获取输入tensor(形状等信息)
auto input=net->getSessionInput(session,NULL);
auto shape=input->shape();
//Set Batch Size为输入图片张数
shape[0]=argc-2;
//修改输入tensor的batch维度
net->resizeTensor(input,shape);
net->resizeSession(session);
//打印一些session信息
float memoryUsage=0.0f;
net->getSessionInfo(session,MNN::Interpreter::MEMORY,&memoryUsage);
float flops=0.0f;
net->getSessionInfo(session,MNN::Interpreter::FLOPS,&flops);