web3系列———2.以太坊与智能合约

这篇具有很好参考价值的文章主要介绍了web3系列———2.以太坊与智能合约。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主流币:

中本聪设计的比特币大获成功后,各种区块链和其对应的加密货币层出不穷,其中不乏新技术的使用,不过大部分的模仿货币最后都销声匿迹了,最终存活并存有大量用户的被称作主流币。

BTC比特币
ETH以太坊
LTC莱特币
XRP瑞波币
USDT (代币)
USDC (代币)
BUSD (代币)
代币是建立在现有区块链平台上的,比如以太坊。你可以用以太币(ETH)来换取这些代币,然后在特定的区块链应用程序中使用它们,就像在游乐园里使用游戏币一样。这些代币没有自己的区块链,它们依赖于别的区块链平台来运行和管理。

其中BTC毫无疑问是当今老大,而**ETH(以太坊)**因为其开创了智能合约平台,使区块链进入2.0时代,坐稳老二的位置。
从以太坊开始,区块链技术号称不再局限于加密货币领域,而是推广到整个web行业,催生出web3.0。

如何理解以太坊:

比特币网络中,每一个区块中只有转账记录,是否可以存点别的东西来提高其扩展性?
以太坊创始人Vitalik和其团队,设计了一种脚本语言Solidity和以太坊虚拟机,程序员可以将用这种语言写的代码,打包成字节码,一起存在区块链上。
以太坊的节点客户端都内置了虚拟机,可以执行这个区块中的代码,实现一些自定义操作。

所以以太坊不仅被理解为一种加密货币,也是一个执行代码的平台,这种代码被称为智能合约。

智能合约有什么用:

见仁见智,关键是理解这种想法,无非在前面区块中写死了一些函数代码,可以供后面的区块调用。各种新概念的仍源于区块链的公开性和不可篡改性。比如:

用于募捐:在5天内募集5000个单位的货币。如果在截止日期前没有达到目标金额,合约将自动将资金退还给捐款人
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

contract Fundraiser {
    // 定义募捐目标和截止时间
    uint public constant TARGET = 5000 ether;
    uint public constant DEADLINE = block.timestamp + 5 days;

    // 记录捐款人和捐款金额
    mapping(address => uint) public contributions;
    address public owner;
    uint public totalContributions;

    // 构造函数,设置合约拥有者
    constructor() {
        owner = msg.sender;
    }

    // 接收捐款的函数
    function contribute() external payable {
        require(block.timestamp < DEADLINE, "募捐已结束");
        contributions[msg.sender] += msg.value;
        totalContributions += msg.value;
    }

    // 检查是否达到目标,若未达到则退款
    function checkGoalReached() external {
        require(block.timestamp >= DEADLINE, "募捐尚未结束");
        if (totalContributions < TARGET) {
            refundAll();
        }
    }

    // 退款给所有捐款人
    function refundAll() internal {
        for (uint i = 0; i < contributors.length; i++) {
            address contributor = contributors[i];
            uint amount = contributions[contributor];
            (bool success, ) = contributor.call{value: amount}("");
            require(success, "退款失败");
            contributions[contributor] = 0;
        }
        totalContributions = 0;
    }

    // 提取资金,只有在达到目标后才能调用
    function withdraw() external {
        require(msg.sender == owner, "只有合约拥有者才能提取资金");
        require(totalContributions >= TARGET, "未达到募捐目标");
        require(block.timestamp >= DEADLINE, "募捐尚未结束");

        (bool success, ) = owner.call{value: address(this).balance}("");
        require(success, "提款失败");
    }

    // 用于接收未标记为contribute的ETH
    receive() external payable {
        contribute();
    }
}

将这个合约存到区块链中,每一个人就可以调用里面的函数来捐钱到指定地址,也不用担心对方卷钱跑路。

由智能合约衍生的玩法还有很多,否则也不能这么火。
问了下GPT,回答如下:
智能合约是区块链技术的一项重要应用,它可以自动执行合同条款,从而提高效率并减少中介成本。以下是一些智能合约的实际应用例子:

  1. 金融领域:智能合约可以用于自动化的资产清算、保险理赔和资产交易。例如,它们可以在确定的条件下自动执行支付和结算。

  2. 管理领域:在组织管理中,智能合约可以帮助实现透明和自动化的决策过程,如DAO(去中心化自治组织)使用智能合约来管理组织的规则和资金。

  3. 医疗领域:智能合约可以用于安全地共享医疗数据,保护患者隐私的同时,提高数据访问和处理的效率¹。

  4. 物联网与供应链:智能合约可以用于自动化的物流跟踪、产品真伪验证和库存管理,从而提高供应链的透明度和效率。

  5. 共享经济:例如,智能合约可以用于自动处理共享资源的租赁和支付,如共享汽车或共享住宿的支付处理。

  6. 投票系统:智能合约可以创建一个安全、透明且不可篡改的投票系统,确保选举的公正性。

代币与如何发行代币:

代币(Token)是区块链中的一种数字资产,可以代表货币、时间、服务、公司股份、虚拟宠物等各种实物或虚拟事物。代币通常通过智能合约来发行,任何人都可以发行自己的代币。
通过编写智能合约中的函数,可以允许用户将原生加密货币转入合约地址,从而换取一定数量的代币。
代币可以是可互换的(fungible)或不可互换的(non-fungible),取决于它们所代表的实物或虚拟事物的特性。
社区制定了一些标准(如ERC20、ERC721和ERC777)来规范智能合约与其他合约的互操作性。ERC20是用于可互换资产的最常见的代币标准,而ERC721则是用于不可互换代币的标准,通常用于收藏品和游戏。

发行ERC20标准代币:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

//发行代币,代币和原生币的汇率为1比1
contract MyToken is ERC20 {
    constructor() ERC20("MyToken", "MT") {
        _mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
    }

//转账函数
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        require(amount <= balanceOf(msg.sender), "Insufficient balance");
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

//查询地址内余额
    function balanceOf(address account) public view returns (uint256) {
        return super.balanceOf(account);
    }
}

web3分布式应用程序(Dapp):

当前,不管是C/S(客户端-服务端)架构还是B/S(浏览器服务端)架构的应用程序,都是用户安装一个前端app或者从浏览器访问网页前端,通过api与企业的服务器进行交互,数据存放在企业自己的数据库中。

web3系列———2.以太坊与智能合约,web3,智能合约,区块链,比特币,以太坊

Dapp(分布式app),每一个Dapp既是一个前端也是一个节点,用户的数据全部存入去中心化的区块链中,隐私数据可以端到端加密后再存入,没有任何人能修改删除你的数据。可以说,对于去中心化的(分布式)app,典型后端这一说法不再适用。

web3系列———2.以太坊与智能合约,web3,智能合约,区块链,比特币,以太坊

特征 Web2应用程序 Web3应用程序
中心化 数据和服务由单一公司或组织控制 应用程序运行在区块链上,没有中心化的控制
数据所有权 用户数据归服务提供商所有 用户拥有自己的数据和身份
可扩展性 交易和操作速度较快 可能因为去中心化而速度较慢
支付集成 调用中心化的第三方支付接口 通过原生代币内置支付功能
可编程性 开放程度有限,自定义程度低 图灵完备,可以编写复杂程序
限制 依赖中心化服务器 交易速度慢,用户体验和成本方面有挑战

Dapp发展现状:

当前大部分Dapp并不是完全体,只是传统前后端+(链端)智能合约。
省略…

潜力巨大,前景广阔,道阻且长。
只能说,祝它成功吧!文章来源地址https://www.toymoban.com/news/detail-856967.html

到了这里,关于web3系列———2.以太坊与智能合约的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链web3智能合约Solidity学习资源整理

    Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。 Solidity中文官方文档: https://solidity-cn.readthedocs.io/zh/develop/ https://learnblockchain.cn/docs/solidity/index.html 在线rem

    2024年03月19日
    浏览(54)
  • Web3 处理智能合约部署到本地区块链,并在本地进行测试

    上文 Web3 在Truffle项目中编写出自己的第一个solidity智能合约我们演示了 在Truffle环境下写一个智能合约并编译的功能 编译出的文件夹中的这个JSON就非常重要了 我们就可以通过 它这个ABI链接到需要的智能合约程序上去 但这也仅仅是编译完了 我们的智能合约还没有部署到我们

    2024年02月13日
    浏览(31)
  • 关于区块链、Web3.0、智能合约、DApp、DAO一文解释清楚

    区块链简单理解就是, 所有数据变成区块组成的链条,一个区块里保存着一条数据。 一笔支付、一个评论、一次查看、一条短信、一袋苹果都能保存为一个数据区块。 由于区块通过链条环环相扣,这确保了链上的数据是不可被篡改的。 链条复制了多条副本放置到多台互不相

    2024年02月02日
    浏览(61)
  • 赛联区块链培训:Web3的核心要素——区块链、加密资产、智能合约和预言机

    在2008年,中本聪发布了比特币白皮书,彻底颠覆了我们对数字化交易的概念,并首次提出了一种无需可信中间方的安全在线交易模式。中本聪写道:“需要基于加密证明,而非信任,来建立电子支付系统。” 智能合约被发明后,去中心化的互联网模式进入公众视野。如果说

    2024年02月07日
    浏览(46)
  • 手把手部署区块链智能合约及python的web3接口调用

    说句实话,在做区块链、智能合约、搭私链、pythonWeb3接口调用这些东西的时候,心里崩溃了不止四五十回,如果可以选别的方向,博主劝你赶紧换,人生已经很不容易了,别给自己找罪受。。。。。 创世块是什么请自行搜索,网络上很多示例的创世块博主都试过,在实际使

    2024年02月04日
    浏览(34)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[21]以太坊-智能合约-1

    目录 一、什么是智能合约 二、智能合约的代码结构         1.Solidity语言         2.bid函数         3.fallback()函数  二、外部账户如何调用智能合约 三、一个合约如何调用另一个合约中的函数         1.直接调用         2.使用address类型的call()函数      

    2024年02月05日
    浏览(32)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[23]以太坊-智能合约-3

    智能合约-1 智能合约-2 1.假设某个全节点要打包一些交易到一个区块里,这些交易里有一些是对智能合约的调用,那么这个全节点应该先执行完智能合约再挖矿,还是先挖矿获得记账权再执行这些智能合约?         在区块链中,如果有一笔转账交易发布上去,需要所有的全

    2023年04月23日
    浏览(33)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5

    智能合约-1 智能合约-2 智能合约-3 智能合约-4 网上竞拍第二版:由投标者自己取回出价 (1)存在的问题         重入攻击,如果有黑客写了一个如下方程序会怎么样?         这个hack_bid跟前面的那个黑客合约hack_bid合约是一样的,通过调用拍卖bid函数参与竞拍,ha

    2024年03月11日
    浏览(50)
  • 北大肖臻老师《区块链技术与应用》系列课程学习笔记[22]以太坊-智能合约-2

    智能合约-1 目录 一、智能合约的创建和运行         1.智能合约的创建         2.汽油费         3.错误处理         4.嵌套调用 二、思考         1.GasLimit和GasUsed         2.以太坊中的GasLimit跟比特币的区别 1.智能合约的创建         智能合约 由一个外

    2024年02月19日
    浏览(39)
  • web3系列———4.编写第一个智能合约并发布到链上

    本篇教程为在以太坊区块链上发布一个智能彩票合约,活动期间用户可充值一定金额的以太币到合约地址,活动结束进行开奖,随机从参与用户中抽取3人,平分奖池奖金。(分为上下两篇)(本篇为下) 教程思路: 新建以太坊钱包 充值一定数额ETH作为合约发布汽油费 Remix编写s

    2024年04月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包