智能合约,代币(token)等 区块链技术学习笔记
- 格式:doc
- 大小:17.49 KB
- 文档页数:9
区块链技术的智能合约功能随着科技的不断发展,区块链技术已逐渐成为众多行业的焦点。
其中,区块链技术的智能合约功能引起了广泛关注。
智能合约是一种基于区块链的自动执行合约,能够实现无需第三方介入的安全、透明的交易和合约执行。
本文将介绍区块链技术中智能合约的功能及其应用。
一、智能合约的定义及特点智能合约是以代码形式存在于区块链中的合约,具有自动执行、去中心化、高度安全的特点。
它基于区块链技术,通过去除中介和信任的需求,使合约双方能够在互不信任的情况下进行交易,并确保合约的公正执行。
与传统合约相比,智能合约具备以下特点:1.1 自动执行智能合约以代码的形式存在于区块链中,一旦满足合约设定的条件,便会自动执行相关操作。
无需双方再次确认或第三方介入,减少了合约执行中的人为干预,降低了操作风险。
1.2 去中心化智能合约的执行依赖于区块链网络中的节点共识机制,而非依赖于中心化的机构或个人。
这意味着没有单一实体可以修改或操纵合约内容,确保交易的不可篡改性和信任性。
1.3 高度安全智能合约基于密码学技术实现了高度的安全性。
所有交易和合约内容都以加密方式存储在区块链中,确保了信息不被篡改和窃取。
此外,智能合约的执行是通过多节点共享验证的,提高了安全性和可靠性。
二、智能合约的功能智能合约的功能主要体现在以下几个方面:2.1 自动执行交易智能合约可以实现双方在约定的条件下自动执行交易。
例如,在房地产领域,买卖双方可以通过智能合约约定相关条件,如支付方式、交付日期等,当满足这些条件时,智能合约会自动执行相应的交易。
2.2 去除中介和信任智能合约去除了传统合约中的第三方中介,双方直接在区块链上进行交易,并通过密码学技术保障交易的安全和可靠。
这种去中介化的特点能够大幅减少交易成本,并提高交易的效率和透明度。
2.3 实现复杂的交易条件智能合约可以对交易条件进行精确设定,例如在金融领域,可以设定不同的利率、还款方式等复杂条件。
智能合约能够确保在满足这些条件的情况下,自动执行相应操作,减少人为错误和操作失误。
《教育数字化转型:人工智能、区块链和机器人技术如何赋能》读书札记1. 人工智能在教育领域的应用随着科技的飞速发展,人工智能(AI)技术在教育领域的应用日益广泛,深刻地影响着教育的数字化转型。
在阅读本书的过程中,我对人工智能在教育领域的应用有了更深入的理解。
人工智能可以辅助教师进行教学工作,减轻教师的工作负担。
AI 可以自动批改作业和试卷,进行学生成绩的分析和反馈,帮助教师更好地了解学生的学习情况。
AI还可以根据学生的学习数据和表现,为每个学生提供个性化的学习建议,帮助学生更好地掌握知识。
基于人工智能的大数据分析,可以对学生的学习需求进行精准分析,从而设计出更符合学生需求的教学课程。
这种个性化的教学方式,能够激发学生的学习兴趣,提高教学效果。
AI还可以对教学资源进行智能推荐,为学生提供丰富的学习资源。
人工智能技术的应用,使得在线学习平台更加智能化。
AI可以根据学生的学习进度和需求,智能推荐学习内容和课程,实现个性化的学习路径推荐。
AI还可以对在线学习平台进行优化,提高课程的互动性和趣味性,增强学生的学习体验。
通过虚拟现实(VR)和增强现实(AR)技术,人工智能可以为学生创造更加真实、生动的学习环境。
这种技术的应用,使得学生可以身临其境地体验学习内容,提高学习效果。
人工智能在教育领域的应用,为教育数字化转型提供了强大的技术支持。
通过AI的辅助,教育可以实现个性化、智能化的发展,为学生的学习和发展提供更好的支持和服务。
在接下来的学习中,我将继续深入研究人工智能在教育领域的其他应用,探索其更大的潜力。
1.1 智能教学系统在《教育数字化转型:人工智能、区块链和机器人技术如何赋能》智能教学系统是探讨数字化教育转型的关键组成部分之一。
随着技术的不断进步,智能教学系统正逐渐成为教育创新的重要推动力。
智能教学系统通过结合人工智能、大数据分析和机器学习等先进技术,能够为学生提供个性化的学习体验。
这些系统可以实时分析学生的学习行为和成绩数据,从而为每个学生制定针对性的学习计划和策略。
区块链中智能合约的原理及应用场景随着区块链技术的发展,越来越多的人开始关注区块链中的智能合约。
智能合约的出现极大地促进了区块链技术的发展,它不仅可以自动化执行合约,还可以保证合约的执行过程是公正、透明、不可篡改的,为各行各业带来了许多的便利和效率提升。
一、智能合约的原理以以太坊为例,智能合约是一种基于以太坊平台的程序,可以实现自动化执行合约规则。
智能合约是一种可编程的合约,允许用户在其中定义各种条件和规则,当这些条件和规则满足时,智能合约就会自动执行相应的操作。
智能合约的基本要素包括合约地址、合约代码和状态数据。
其中,合约地址是智能合约在区块链中的唯一标识符,合约代码是合约的实现逻辑,状态数据则是合约的存储数据。
智能合约实际上是一个分布式程序,它运行在区块链节点上。
当智能合约执行时,它会被存储到区块链上,并随着区块链的增长不断得到验证和确认。
这意味着智能合约的执行过程是公正、透明、不可篡改的,所有参与者都可以通过区块链来验证智能合约的执行结果。
二、智能合约的应用场景1. 金融领域智能合约可以在金融领域中实现自动化交易,减少中介和交易成本。
例如,智能合约可以用于股票、期货、外汇和债券等金融产品的交易。
此外,智能合约还可以用于金融衍生品的运作,如期权、期货、掉期、固定收益证券等。
2. 物流领域智能合约可以有效优化物流领域的供应链管理和运营。
例如,智能合约可以用于物流订单的自动化管理,包括订单的成立、变更、履约和结算等。
此外,智能合约还可以用于物流企业的客户关系管理、物流配送路线的优化等。
3. 能源领域智能合约可以在能源领域中发挥重要作用。
例如,智能合约可以通过自动化管理能源系统的购买、销售和储存等业务,使能源市场更加高效和公平。
此外,智能合约还可以用于能源公司之间的协作和合作,以提高能源行业的效率和收益。
4. 版权领域智能合约可以用于保护知识产权和数字版权。
例如,智能合约可以对音乐、电影和其他数字媒体的版权进行管理和保护,防止盗版和侵权行为。
区块链技术的核心知识点区块链技术是近年来备受关注的一项重要技术,其具有分布式、去中心化、高可信等特点,在金融、物联网、供应链管理等领域具有广阔的应用前景。
本文将对区块链技术的核心知识点进行详细介绍。
一、区块链的基本概念和特点区块链可以理解为一个由区块组成的链式数据结构。
每个区块存储了一定数量的交易记录,并通过哈希指针与前一个区块建立联系,形成了一个不可篡改的交易链。
区块链技术的核心特点包括:分布式存储、去中心化、匿名性、可追溯性、不可篡改性等。
二、Hash算法和加密技术Hash算法是区块链技术的基石之一,它能够将任意长度的数据映射为固定长度的字符串,且具备不可逆性和唯一性。
常用的Hash算法包括SHA-256、MD5等。
加密技术在区块链中也起到重要作用,公钥加密、数字签名和哈希锁等技术的应用使得交易在区块链上具备了高度的安全性和防篡改性。
三、共识机制共识机制是区块链中实现分布式记账的核心机制,它能够保证区块链网络中的节点就某个交易或区块达成一致。
常用的共识机制包括工作量证明(PoW)、股份证明(PoS)、权益证明(DPoS)等。
共识机制的选择对于区块链的性能、安全性和可扩展性有着重要影响。
四、智能合约智能合约是一种能够自动执行合约条款的计算机程序,它利用区块链技术的特点实现了多方的信任和可靠的合约执行。
智能合约可以用于自动化执行交易、数字资产管理、电子投票等场景。
以以太坊为代表的区块链平台提供了智能合约的实现框架,使得区块链应用的开发变得更加简单和灵活。
五、隐私保护隐私保护是区块链技术在实际应用中需要解决的重要问题。
传统的区块链技术往往会将交易信息完全公开,这导致了隐私泄露的问题。
为了解决这一问题,零知识证明、同态加密等隐私保护技术被提出并逐渐应用于区块链系统中。
六、扩展性与性能优化区块链在具备高安全性和去中心化特点的同时,也面临着性能瓶颈和可扩展性问题。
目前,一些解决方案如分片技术、侧链、闪电网络等被提出以优化区块链的性能和可扩展性,为大规模商业应用提供支持。
区块链科技知识点总结一、概念介绍区块链技术是一种分布式数据库技术,它可以记录数字货币交易等各种数据。
它的特点是去中心化、安全可靠、透明公开。
区块链是由若干个区块组成,每个区块包含了一定时间段内的数据记录。
区块链采用哈希函数算法将每个区块链接起来,形成一个不可篡改的链条,从而保证了数据的安全性和完整性。
区块链技术最早应用于比特币等数字货币的交易记录,后来逐渐被应用于金融、供应链管理、医疗健康、政府服务等各个领域。
区块链技术的出现,为传统中心化系统带来了革命性的变革,让信息互联网走向了价值互联网。
二、技术原理1. 分布式账本区块链技术的核心是分布式账本,每个参与者都可以获得区块链的完整副本。
当有新的交易发生时,每个参与者都会记录这笔交易并更新自己的账本。
这种分布式账本的方式使得数据不再依赖于单一的中心化机构,从而保证了数据的安全性和可靠性。
2. 共识机制区块链技术的共识机制是保证区块链网络安全和一致性的重要手段。
常见的共识机制包括工作量证明(PoW)、权益证明(PoS)、权益份额证明(DPoS)等。
共识机制的核心是让网络中的参与者达成一致,以确定新的区块的诞生和加入区块链中的顺序。
3. 哈希函数哈希函数是区块链技术的重要基础。
它可以将任意长度的输入数据转换成固定长度的输出数据,且输出数据的变化是无法预测的。
区块链中使用哈希函数来保证数据的完整性,即每个区块的哈希值包含了前一个区块的哈希值,从而形成了一个不可篡改的链条。
4. 公私钥加密区块链技术中的加密算法是保证数据安全的重要手段。
每个用户都有一对公私钥,公钥用来加密数据,私钥用来解密数据。
使用公私钥加密算法可以保证交易数据的安全性和隐私性。
三、应用场景1. 金融行业区块链技术在金融行业的应用最早,主要体现在数字货币、跨境支付、智能合约等方面。
例如比特币、以太坊等数字货币的交易都是基于区块链技术的,可以实现匿名的价值转移。
跨境支付方面,区块链技术可以大大降低跨境支付的成本和时间,改善了传统的跨境支付体验。
智能合约又称智能合同,是由事件驱动的、具有状态的、获得多方承认的、运行在区块链之上的、且能够根据预设条件自动处理资产的程序,智能合约最大的优势是利用程序算法替代人仲裁和执行合同。
简单来讲,就是一种用计算机语言取代法律语言去记录条款的合约。
一、技术特性:
1、永久运行
支撑区块链网络的节点往往达到数百甚至上千,部分节点的失效并不会导致智能合约的停止,其可靠性理论上接近于永久运行,这样就保证了智能合约能像纸质合同一样每时每刻都有效。
2、数据透明
区块链上所有的数据都是公开透明的,因此智能合约的数据处理也是公开透明的,运行时任何一方都可以查看其代码和数据。
3、不可篡改
区块链本身的所有数据不可篡改,因此部署在区块链上的智能合约代码以及运行产生的数据输出也是不可篡改的,运行智能合约的节点不必担心其他节点恶意修改代码与数据。
二、工作原理
开发人员会为智能合约撰写代码。
可用于交易和(或)两方/多方之间的任何交换行为。
该代码包含一些会触发合约自动执行的条件。
一旦编码完成,智能合约就会被上传到区块链网络上,即它们被发送到所有连接到网络的设备上。
从另一种区块链应用——比特币——的情况来说,这就好像把关于比特币交易的网络更新上传到区块链上。
所以,数据一旦上传到所有设备上,用户就可以与执行程序代码的结果达成协议。
然后更新数据库以记录合约的执行情况,并监督合约的条款以检查合规性。
这样一来,单独一方就无法操纵合约,因为对智能合约执行的控制权不在任何单独一方的手中。
以上就是有关区块链智能合约的一些具体介绍,希望对大家进一步的了解有所帮助。
区块链工程知识点总结1. 区块链概念区块链是一个去中心化的数据库系统,其核心特点是不可篡改性、分布式账本、智能合约等,通过密码学技术保障数据的安全性和可信度。
区块链技术可以应用于金融、物流、医疗、政府等领域,实现去中心化的价值传输和信任机制。
2. 区块链原理区块链是一种分布式数据库,由多个节点构成。
每个节点都有一个完整的账本,其中记录了所有的交易信息。
所有的交易数据都被打包成一个区块,并通过加密算法生成唯一的哈希值。
每个区块都包含上一个区块的哈希值,从而形成一个不可篡改的链条。
3. 区块链技术区块链技术主要包括共识算法、分布式存储、智能合约、加密算法等。
共识算法决定了区块链网络中的数据一致性和安全性;分布式存储使得数据备份和共享更加安全和高效;智能合约是一种自动执行的合约,可以实现各种复杂的交易逻辑;加密算法保障数据的机密性和完整性。
4. 区块链应用区块链技术已经在金融、供应链、医疗、政府等领域得到了广泛的应用。
在金融领域,区块链可以实现跨境支付、智能合约、数字货币等;在供应链领域,区块链可以实现商品溯源、众包配送等;在医疗领域,区块链可以实现患者数据共享、医院管理等;在政府领域,区块链可以实现选举投票、身份认证等。
5. 区块链安全区块链安全是指保障区块链网络中数据不被篡改、窃取、拒绝服务等风险,主要包括密码学技术、共识算法、智能合约安全等。
密码学技术包括哈希算法、数字签名、非对称加密等,保障数据的机密性和完整性;共识算法决定了数据的一致性和可信度;智能合约安全是指保障智能合约执行的安全和可靠性。
6. 区块链性能区块链的性能主要包括吞吐量、延迟和存储容量。
吞吐量是指区块链网络可以处理的交易量;延迟是指交易确认的时间;存储容量是指区块链网络可以存储的数据量。
提高区块链的性能是提高网络的可扩展性和应用场景的广泛性。
7. 区块链技术发展区块链技术发展的趋势主要包括跨链技术、隐私保护、扩容技术等。
跨链技术可以实现不同区块链网络之间的数据交换和价值传输;隐私保护是指保护用户的交易和身份信息不被泄露;扩容技术是指解决区块链网络吞吐量和存储容量的问题。
从零开始构建区块链:理解分布式账本和智能合约区块链技术自问世以来,在金融、物流、医疗等诸多领域都有着广泛的应用。
它被誉为下一代互联网技术,具有去中心化、不可篡改以及数据安全性高等特点。
要从零开始构建区块链,首先需要了解区块链的核心概念:分布式账本和智能合约。
一、分布式账本1.1区块链的分散性区块链是一种去中心化的数据库,它的交易记录是在多个节点上共同维护和记录的,而不是集中存储在某个中心服务器上。
每个节点都有完整的账本副本,当有新的交易发生时,所有节点会共同验证并记录这笔交易,确保所有节点的账本保持一致。
1.2不可篡改性区块链中的每个区块都包含前一个区块的哈希值,这种链接的方式使得区块链中的数据是呈现链状结构,任何一个区块被篡改都会导致后续区块的哈希值发生变化,从而让篡改行为变得极为困难。
这种特性使得区块链具有不可篡改性,确保数据的安全和可靠性。
1.3共识算法区块链中的共识算法是保证所有节点之间达成相同交易记录的一种机制。
常见的共识算法包括工作量证明(PoW)、权益证明(PoS)、权益证明+权益投票(DPoS)等。
这些共识算法保证了区块链网络的稳定性和安全性。
二、智能合约2.1什么是智能合约智能合约是一种以代码形式存储在区块链上的自动执行的合约,它可以在特定条件下自动执行各种操作。
智能合约借助区块链的分布式账本和共识算法,实现了无需中间人的自动化执行合约。
2.2智能合约的特点智能合约具有自动、不可篡改、去中心化等特点,也可以确保各方的交易安全。
智能合约可以被程序化地执行,确保了合约的执行结果不受人为干扰,提高了交易的透明度和可靠性。
2.3智能合约的应用智能合约可以应用于各种场景,如数字货币的发行、众筹项目、投票系统等。
智能合约可以实现自动执行条件,提高了合约的效率和安全性,让合约执行更为透明和可靠。
三、从零开始构建区块链3.1搭建区块链网络要构建区块链,首先需要搭建一个区块链网络。
可以使用现有的区块链平台如以太坊、超级账本等,也可以自己搭建一个区块链网络。
区块链技术原理知识详解随着数字时代的发展,区块链技术逐渐成为了人们关注的焦点。
它不仅可以为交易提供更安全、更可信的保障,也对数字化资产的管理提供了更加智能化、高效化的解决方案。
区块链技术的基础原理是什么?本文将详细解析区块链技术的原理,以帮助读者了解并掌握该技术。
一、概述区块链技术最初出现于2008年,是由Satoshi Nakamoto提出的,他是一位匿名的密码学家。
虽然有人将Satoshi Nakamoto称为区块链技术的发明人,但实际上,区块链技术是由多人共同贡献和发展的。
最初的区块链技术应用于比特币的发明中,它为比特币的交易提供了一个去中心化的解决方案。
随着时间的推移,区块链技术结合了密码学、分布式系统和经济学等多个领域,逐渐演化为一种独特的技术体系。
它的设计初衷是为了在不依赖任何第三方机构的情况下,实现数字资产的交易和管理。
区块链技术的核心优势在于:去中心化、安全性高、可可追溯、不可篡改。
这些特性是通过区块链的数据结构和共识算法来实现的。
二、区块链的数据结构区块链的数据结构通常由区块和链组成。
一般而言,一个区块包含了多个交易记录。
1、区块的标识每个区块都有一个唯一的标识,也就是区块的哈希值。
哈希值是由区块中的数据通过哈希函数计算出来的一个固定长度的字符串。
在区块链中,每个区块的哈希值同时也会包含前一个区块的哈希值,这形成了一个链式结构。
也就是说,区块链中的所有区块都是有序的,并且是不可更改的。
2、区块的结构每个区块通常由如下组成部分构成:(1)区块标识(Hash):表示该区块的唯一标识。
(2)交易记录:包括发起交易的地址、接收交易的地址、交易金额以及交易费用等信息。
(3)时间戳:表示区块的产生时间。
(4)随机数:是用来判断该块是否有效的一个随机数。
(5)前区块哈希值:表示该区块之前的区块的哈希值。
(6)Merkle Tree 根:是对交易记录数据进行哈希计算后形成的一个根节点。
三、区块链的共识算法在区块链中,共识算法是保证网络安全和一致性的关键因素。
(计算机基础知识)区块链基础知识区块链基础知识随着数字化时代的到来,区块链技术逐渐引起了全球范围内的兴趣和关注。
本文将介绍区块链的基础知识,包括其定义、原理、应用场景以及发展趋势等。
一、定义区块链是一种去中心化的分布式数据库技术,它的特点是去中心化、公开透明、安全可信。
它通过密码学技术和分布式共识算法,将交易记录以链式结构存储,并通过网络节点之间的互相验证和同步达成共识,确保数据的不可篡改和安全性。
二、原理区块链的核心原理是分布式共识和密码学技术。
分布式共识是指通过网络中的多个节点共同达成对交易的确认和验证,确保数据的一致性和准确性。
而密码学技术则用于保证数据的机密性和完整性,包括公私钥加密、哈希函数等。
区块链的运作包括以下几个步骤:首先,将交易记录打包成一个区块,并通过哈希函数生成唯一标识;其次,将区块连接成链式结构,形成一个完整的区块链;然后,通过共识算法,网络节点对新生成的区块进行验证和确认;最后,新的区块添加到区块链的尾部,并广播给其他节点进行同步更新。
三、应用场景区块链技术具有去中心化、安全可信的特点,使其在许多领域有着广泛的应用前景。
1. 金融领域:区块链技术可以应用于数字货币、跨境支付、供应链金融、智能合约等方面,提高交易的效率和安全性。
2. 物联网领域:区块链可以实现设备间的信任和数据交换,解决物联网中的安全和隐私问题。
3. 版权保护:区块链可以用于数字版权保护,确保知识产权的权益。
4. 公共事务管理:区块链技术可以应用于选举、政务管理、社会保障等方面,提高公共事务的透明度和可信度。
四、发展趋势随着区块链技术的不断发展和应用拓展,未来它可能会出现以下几个趋势:1. 效率提升:随着技术的成熟和应用场景的拓展,区块链将进一步提高交易的处理速度和效率。
2. 隐私保护:为了保护用户的隐私,未来的区块链技术可能会加强对个人信息的保护和匿名性的支持。
3. 跨链互操作:不同的区块链之间可能实现互相连接和交互,提高区块链应用的整体效能。
智能合约,代币(Token)等- 区块链技术学习笔记智能合约(Smart Contract)是区块链一个重要的功能。
说到智能合约,我们得把视野从比特币转到以太坊,因为完整的支持智能合约是以太坊和比特币的重大差别。
让我们发个币吧听说区块链上可以发币,想发行一个自己的币①?来,直接上代码!我希望你即使不懂代码,也要放下对未知的恐惧,静下心来一行一行读。
毕竟这代码简单到大多数人都能看懂。
contract XMT {mapping (address => uint) public balanceOf;function XMT() public {balanceOf[msg.sender] = 1000;}function transfer(address to, uint value) public{ require(balanceOf[msg.sender] >= value); require(balanceOf[to] + value >= balanceOf[to]); balanceOf[msg.sender] -= value;balanceOf[to] += value;}}惊人之处来了。
如上代码不是概念性的伪代码,而是可以运行的真实代码。
首先它定义了一个记录每个账户有多少余额的数组:balanceOf 。
mapping (address => uint) public balanceOf;看不懂的同学就把它当作有两列的表格,第一列是账号,第二列是余额。
用balanceOf [ 账号] 就可以查到这个账号的余额,也可以更改余额。
接下来是两个功能:初始化和转账。
初始化函数XMT( )很简单,就是合约建立的时候,任性的把1000个币全都给创建者。
balanceOf[msg.sender] = 1000;大家要问,币是怎么产生的?没什么产生过程,想给谁多少就是多少。
初始的时候写一个亿也就有了一个亿的币。
如此随意的就能产生币,希望会引发大家在夜深人静的时候,对于货币到底是什么这样的深层思考。
我们接着看:转账代码transfer( ) 核心是两句:balanceOf[msg.sender] -= value;balanceOf[to] += value;谁发起的转账,就把他(msg.sender)的账户余额减去转账金额(value)那么多,然后把收款人(to)的余额加上那么多②。
别小看这两句话。
仔细琢磨一下,这其实就是账户和转账的本质。
这简单的两句话是银行体系这么多年花了多少的硬件软件,人力物力才能达到的效果。
大家常常听说谁谁谁又发币了。
从技术角度,就是在以太坊上部署了包含这三行代码的一个合约。
在以太坊的官方网站上就有一段100多行的标准代码:https:///token。
这段代码里面还有其他一些功能,比如可以给这个代币指定名称,符号,还有授权转账,销毁等功能。
大家只要拷贝这个代码,指定你的新币的名称(比如Xiaomao Token),符号(比如:XMT)⑦,还有初始发行量比如:1,000,000,000),一个新的币就诞生了。
整个过程3分钟应该够了。
把参数改一下再部署一下代码,第二个新币又诞生了。
这新生的货币,虽然没啥用,但在安全性方面和以太币天生是一样的。
这就像家长给孩子发了一些饭票,而这饭票的防伪技术和美元一模一样。
看起来相当的大材小用,但如果把发货币成本降到几乎为零,把防伪能力提升到已知的最高水平,随着时间的推移,难说不会产生什么重要的应用。
部署代码代码看懂了,下一步呢?怎么运行这代码?这代码到底在哪里运行呢?接着我们看部署过程。
部署代码,你需要在以太坊的客户端里,把这段代码粘贴进去,并且按“部署”按钮。
客户端就会把这种人可以读懂的代码③编译成字节码,然后生成一笔从你的地址,发给一个空地址(0x0)的交易,并把字节码存在一个给定的字段里面(叫input),签名后发到整个网络上。
接下来的操作和普通交易完全一样。
矿工收到了以后立刻开始打包,算nonce,找到了以后再发送给全网络。
这个可以被执行的代码,就永久的以只可读取不可更改的方式,存在了区块链上。
智能合约建立后会返回一个地址。
每个币都唯一的对应于一个智能合约,也就是对应于一个地址。
比如著名的EOS币,就是地址为0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0 的智能合约发行的。
你可以把这个地址想象成以太坊世界里的门牌号。
币是以这个唯一的门牌号来区分的,而不是那三位的名字。
调用合约现在,合约的代码安全的存在区块链上了。
那么接下来这些代码什么时候执行呢?一个智能合约里面有多个函数。
调用智能合约里的一个函数,和发起一笔普通转账交易一样。
很多的客户端已经内置进去了。
你提供合约的地址,提供调用的函数,以及传入参数,然后发送消息就开始执行了⑤。
你可以把它理解为从门牌号的屋子里面拿东西或者放东西进到给定的屋子。
消息发出以后,所有的矿工都执行这段代码,并且试图把结果打包到自己的数据块中,胜出的矿工获得挖矿的收益。
所有的节点收到这个新的区块,也用自己的虚拟机执行一遍代码,确认结果和收到的块内结果无异之后才当作合法区块接受。
区块链就是通过这种超额的浪费,看似无意义的算nonce,看似无意义的反反复复,没完没了的执行同一段代码,来保证了一个安全的系统。
这事儿就跟早上叠被子晚上还得展开一样,看似不产生价值,实则是房(shu)间(ju)整(an)洁(quan)不可或缺的一环。
花费Gas既然代码要被所有节点反复执行,那么问题就来了:要是谁写了巨长无比的代码,或者谁写了有问题的代码,死循环不结束了怎么办?以太坊的解决方法就是引入gas,每执行一个操作都是收费的。
怎么收费呢?首先每个交易的代码执行量越大,需要的gas就越多。
字节码每一个操作都有固定的gas花销。
以发币代码为例,如下是以太坊给我发的账单。
总共执行了320步字节码的操作。
有的操作很便宜,比如压栈(PUSH1),只要3个单位的gas,有的就很贵,比如在区块链上存数据(SSTORE)就一下子花了20,000个单位,而读取数据(SLOAD) 中等,200个单位。
如下加在一起就是1,300,213个单位的gas。
只要执行这段代码,就是要这么多gas,好像汽车修理店工时的概念。
提交的时候每个人都可以出价,声明自己愿意为每个单位gas付多少钱(price)。
这个有点像修理店的每工时的价钱。
比如你可以出8 gwei/gas,或20 gwei/gas ⑥。
矿工们大多数都是按照这个价钱排序优先打包出钱多的。
出钱少就慢,甚至没人理。
矿工的费用= gas单位数* 单位价格。
如下图所示交易,1,300,213 gas * 2 gwei/gas = 2,600,426 gwei,或0.002600426 以太币,折合1.832美元。
最终把这笔交易打包进区块链的矿工获得这部分费用。
除了价格以外,还需要指定一个gas limit,就是你为了这段代码最多愿意付多少单位的gas。
这就是为了预防代码出现问题,无限循环下去,直到把你的账户里的钱耗尽为止。
如上图,gas limit设为1,300,213个,这段代码实际上也只用了1,300,213个单位的gas,还好,正好没有超过限制。
否则超过了程序执行会嘎然而止,已经花的gas不退。
智能合约的价值智能合约第一次认可了代码的自主权。
代码可以拥财产,可以和人一样平等的在区块链上交易。
一个合约的代码一旦发布,谁都改不了了,连上帝都无能为力。
这就是信任的来源。
大家可以像坚信自然定律一样坚信这个合约如代码所写的执行。
你不需要相信任何人,只需要认真的读智能合约的代码,就可以确定性的知道这个合约将如何执行。
如上从技术层面简单的介绍了一下智能合约的过程。
但智能合约和区块链真正的价值不在技术,而是它们对于价值传递以及信任建立的贡献。
我们看到的人类发展总是多条线并进,一条是生产效率,蒸汽机,电力,计算机,互联网,人工智能等都在这条线上;区块链是生产关系的进步这条线上的,这条线上曾经有过货币,现代公司制度,股票,现在有了区块链。
晚一些我再聊一下它对信任的贡献,还有可能对于社会的改变。
后注① 很多专业人士希望把token翻译成通证,而不是代币。
“通证”更加符合单词原意,符合事物本质,也希望避免被当作货币监管。
这像极了“网志”和“博客”两个译名之争。
结果博客被接受,更加准确,拗口,后来出现的网志不再有人提起。
这个结果或许可以预测通证这个翻译的结果。
②Transfer函数前面的两句require,第一个是要求你的余额必须大于转账金额,第二个是要求转账金额不要过大以至于大于256位整数能容纳的数字。
msg.sender 是内置的,可以获取消息的发送人的地址。
③可以搜索Remix,或MyEtherWallet。
Solidity 的语法和JavaScript很像,专门用于以太坊上编写智能合约。
④这里解释一下技术细节。
建立合约的时候,用户发起一笔发款人为自己,收款人为空地址0x0 的交易,并把字节码放到交易里面叫做输入(Input)的字段里面。
矿工就会生成一个新的合约地址并把代码存在这个地址里。
⑤技术实现,其实是在交易数据的Input字段加上了一个编码后的数字。
比如这串数字:a9059cbb00000000000000000000000007fdf7518745170 e3d9de26874578b6c0a72b9dc000000000000000000000 0000000000000000000000000000000000000000010颜色是我为了区分加的,前四字节a9059cbb是函数名,'transfer(address,uint256)'这个字符串的SHA3-256哈希结果a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4 e46b11da047c9049b的前4位,用来指定是哪一个函数,根据函数定义,就知道后32位是第一个参数:地址,也就是0x07fdf7518745170e3d9de26874578b6c0a72b9dc。
接下来32个字节是金额,相当于十进制16。
大家看得出,现在的区块链从抽象水平上基本上还停留在计算机的DOS 和汇编语言的时代。
⑥ 1 gwei 就是1,000,000,000 个wei。
这个g就跟内存单位多少GB的G是一个概念,就是10亿的意思。
10的18次方个wei就等于一个以太币。
所以1 gwei 看起来很大,其实也就是10的9次方分之1个以太币而已。
一个以太币在我写这篇文章的时候是764美元,你大概有概念了是多少钱了吧。