草庐IT

钻石合约

全部标签

solidity实现智能合约教程(3)-空投合约

文章目录1介绍2主要功能3代码示例4部署测试猛戳订阅学习专栏🍁🍁👉solidity系列合约源码+解析👈🍁🍁1介绍空投就是一种营销策略,通过空投活动将某种数字货币或代币分发给用户,通常需要用户完成一项简单的任务,如分享新闻、介绍朋友或拥有某种数字货币,目前也被广泛应用于宣传新币种,在数字货币市场中反响不错。本文将和大家一起编写我们常见的糖果空投合约。“发送0个ETH到某个地址,立马获得5000枚Token,每个地址只能获取一次”,相信大家对于此类糖果空投的信息都已经遇见过很多次了,也有很多朋友趁此机会薅了很多羊毛。身为开发人员,我们不应只是简单的薅羊毛,更应该深入地去研究此类糖果空投的实现原理。

Truffle项目搭建、编译、部署、验证合约

Truffle项目搭建、编译、部署、验证合约以及过程中的坑点处理环境依赖安装truffle搭建项目编写合约和脚本编译合约部署合约ropsten测试币配置网络部署验证合约安装truffle-plugin-verify获取apikey修改truffle-config.js验证合约环境依赖1.nodejs2.python安装truffle//安装npminstall-gtruffle//查看版本truffleversion搭建项目mkdirdemocddemotruffleunboxwebpack出现报错,网络被墙下载失败修改C:\Windows\System32\drivers\etc\hosts

TRX和TRC10交易三种合约

在TRON中检测TRX或TRC10事务涉及3种类型的合约:TransferConract(系统合同类型)TransferAssetContract(系统合同类型)TriggerSmartContract(智能合约类型)Transaction,TransactionInfo和Block的数据包含所有智能合约交易信息。TransferContract和TransferAssetContract分别是用于转移TRX和TRC10的系统合同事务只包含一个契约,因此查询事务使用接口GetTransactionbyId获取有关契约的特定信息。使用GetBlockByNum来检索打包事务的块信息Transfe

隐私保护和数据安全:区块链的隐私问题、零钞:基于zkSNARK的完美混币池、Hawk:保护合约数据私密性、Coco框架、Baby Zoe

第十章文章目录第十章一、区块链的隐私问题1、化名和匿名2、去匿名攻击:交易表分析二、零钞:基于zkSNARK的完美混币池1、零知识证明2、零钞的运行原理三、Hawk:保护合约数据私密性四、Coco框架1、TEE环境简介五、以太坊隐私保护技术路线:BabyZoe一、区块链的隐私问题1、化名和匿名所谓化名就是我们在网络中使用的一个与真实身份无关的身份,在比特币或者以太坊紫彤的交易中,使用者使用公钥散列值作为交易地址。因此区块链中的交易具有化名性。匿名:指的是具备无关联性(unlinkability)。由于用户反复使用公钥散列值作为交易标识,交易之间显然能建立关联。所以不具有匿名性。2、去匿名攻击:

10.区块链系列之hardhat部署抵押赎回Fund合约

本文继续通过笔者学习到的抵押赎回智能合约Fund来进一步学习solidity语言,加深对开发的理解,其中通过storage节省gas是需要重点实践的,毕竟涉及到资产代码已提交至https://gitee.com/SJshenjian/blockchain/tree/master/hardhat-fund-me-fcc1.依赖安装https://gitee.com/SJshenjian/blockchain.gitcdhardhat-fund-me-fccyarn若出现如下错误fatal:unabletoaccess'https://github.com/ethereumjs/ethereumj

c# - Protobuf-net(反)小数序列化在使用自定义小数原型(prototype)合约(C#/C++ 互操作)时抛出

假设我想序列化,然后使用protobuf-net反序列化一个小数:constdecimaloriginalDecimal=1.6641007661819458m;using(varmemoryStream=newMemoryStream()){Serializer.Serialize(memoryStream,originalDecimal);memoryStream.Position=0;vardeserializedDecimal=Serializer.Deserialize(memoryStream);Assert.AreEqual(originalDecimal,deseria

c++ - 复杂的菱形继承(钻石问题) : C++ virtual inheritance

我有一个看起来像这样的菱形继承(钻石问题):__A/|\|B|\v|/vv\|v\vB2B3C\v/v/B4/\/D我尝试了很多方法来制作最好的虚拟继承来避免重复,但我找不到解决方案。类A包含一个位置。这是一个示例输出:Call:A()positionpointeris:0x2203be8Call:B()Call:B2()positionpointeris:0x2203be8Call:B3()positionpointeris:0x2203be8Call:C()positionpointeris:0x2203a28Call:B4()positionpointeris:0x2203be8

solidity进阶第四课——在合约中创建新合约

在以太坊上,用户(外部用户)可以创建智能合约,智能合约同样也可以创建新的智能合约。去中心化交易所uniswap就是利用工厂合约(Factory)创建了无数个币对合约(Pair)。这一讲将讲如何在合约中创建合约。create和create2有两种方法可以在合约中创建合约,create和create2,这里我们讲create,下一讲会介绍create2。create的用法很简单,就是new一个合约,并传入新合约构造函数所需参数:Contractx=newContract{value:_value}(params)其中Contract是要创建的合约名,x是合约对象即地址,如果构造函数是payable

Solidity合约中Merkle Root验证的一点实践

背景在上一篇文章"Solidity合约中签名验证的一点实践"中提到过,白名单机制一般有两种,除了签名验证的方式外,就是本文讲述的MerkleRoot验证的方式。主要做法是在服务端对白名单地址列表整体构建Merkle树,计算出树的roothash,合约只需存储这个Merkle的根哈希值就可以了。由于Merkletree的构建,不需要任何私钥,所以安全性有很大提升,目前大多数新项目都会采用这个方法。整体交互流程和签名验证比较相似,大致为:后端预先收集所有的白名单地址,构建出完整的Merkle树用户在前端网页操作发起premint时,弹出信息提示用户对该请求进行签名请求发到后端,后端校验签名后,查询

【第二章】简单智能合约示例与学习

简单的存储试例:我们从一个基本示例开始,该示例设置变量的值并将其公开以供其他合约访问。//SPDX-License-Identifier:GPL-3.0pragmasolidity>=0.4.16第一行告诉您源代码是在GPL3.0版下获得许可的。机器可读的许可证说明符在默认发布源代码的设置中很重要。下一行指定源代码是为Solidity版本0.4.16或更高版本的语言编写的,但不包括版本0.9.0。这是为了确保合约不能与新的(破坏性的)编译器版本一起编译,因为它的行为可能会有所不同。 Pragma是编译器关于如何处理源代码的常用指令(例如pragmaonce)。Solidity意义上的合约是位于