前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于区块链公排互助DAPP系统开发搭建(程序代码)

关于区块链公排互助DAPP系统开发搭建(程序代码)

原创
作者头像
开发v_StPv888
发布2022-11-02 10:22:00
3900
发布2022-11-02 10:22:00
举报
文章被收录于专栏:making

根据事件描述信息中包含的触发条件,当满足触发条件时,智能合约系统自动从智能合约中发出预设的包含触发条件的数据资源和事件;整个智能合约系统的核心是智能合约以交易和事件的形式被智能合约模块处理,它仍然是一组交易和事件。智能合约只是一个由交易处理模块和状态机组成的系统,并不产生或修改智能合约。它的存在只是为了使一组复杂的带有触发条件的数字承诺能够按照参与者的意愿正确执行。以下是基于区块链构建和执行智能合约的步骤,

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.Structure;

namespace HOGtest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Image<Bgr, Byte> img = new Image<Bgr, Byte>("001.jpg");//测试图片
            Emgu.CV.HOGDescriptor hog = new HOGDescriptor();//建立HOG描述子
            hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector());//设置分类器模型数据,这里是opencv默认的模型
            MCvObjectDetection[] vec = hog.DetectMultiScale(img);//获得检测结果
            Image<Bgr, Byte> ss = new Image<Bgr, Byte>(img.ToBitmap());//在新图像上表示结果
            for (int i = 0; i < vec.GetLength(0); i++)
            {
                Rectangle r = vec[i].Rect;
                MCvScalar s = new MCvScalar(0,0,0);
                CvInvoke.Rectangle(ss,r,s);
            }
            pictureBox1.Image = ss.ToBitmap();
        }
    }
}

  区链这种去中心化、防篡改的平台,完美地解决了这些问题。智能合约一旦在区链上部署,所有参与节点都会严格按照既定逻辑执行。基于区链上大部分节点都是诚实的基本原则,如果某个节点修改了智能合约逻辑,那么执行结果就无法通过其他节点的校验而不会被承认,即修改无效。这样智能合约就可以按照既定指令运营下去。区链成为了智能合约可执行的“最佳拍档”。

 

让我们直接开始吧。我们的mint()函数将采用以下参数:

  • owner: &T::AccountId
  • dna: Option<[u8; 16]>
  • genderOption<Gender>

它将返回Result<T::Hash, Error<T>>

粘贴以下代码片段以编写mint函数,取代工作代码库中的ACTION #2:

代码语言:javascript
复制
// Helper to mint a Kitty.
pub fn mint(
    owner: &T::AccountId,
    dna: Option<[u8; 16]>,
    gender: Option<Gender>,
) -> Result<T::Hash, Error<T>> {
    let kitty = Kitty::<T> {
        dna: dna.unwrap_or_else(Self::gen_dna),
        price: None,
        gender: gender.unwrap_or_else(Self::gen_gender),
        owner: owner.clone(),
    };

    let kitty_id = T::Hashing::hash_of(&kitty);

    // Performs this operation first as it may fail
    let new_cnt = Self::count_for_kitties().checked_add(1)
        .ok_or(<Error<T>>::CountForKittiesOverflow)?;

    // Check if the kitty does not already exist in our storage map
    ensure!(Self::kitties(&kitty_id) == None, <Error<T>>::KittyExists);

    // Performs this operation first because as it may fail
    <KittiesOwned<T>>::try_mutate(&owner, |kitty_vec| {
        kitty_vec.try_push(kitty_id)
    }).map_err(|_| <Error<T>>::ExceedMaxKittyOwned)?;

    <Kitties<T>>::insert(kitty_id, kitty);
    <CountForKitties<T>>::put(new_cnt);
    Ok(kitty_id)
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档