1. 什么是nft概念
什么是NFT
NFT是Non-Fungible Token的缩写,中文称为「非同质化代币」,通常是指开发者在以太坊平台上根据ERC721标准/协议所发行的代币,它的特性为不可分割、不可替代、独一无二的,简单来说,采用ERC721标准/协议而发行的代币就叫做NFT。
就以CryptoKitties(谜恋猫)此款游戏为例,游戏中的猫咪无法被彼此取代,假设小张拥有一只黄色猫咪,价值两百美金,而小花拥有一只蓝色有翅膀的猫咪,价值四百美金。
蓝色有翅膀的猫咪与黄色猫咪,两只加密猫无法取代彼此。如果小张有一元美金,小花也有一元美金,一元美金可以被任何一元美金取代,小张与小花互换一元美金,它们拿到的还是一样的一元美金。但猫咪不是,交换后就完全长不一样,连价值也不一样,这就是NFT所谓的不可替代性与独特性。NFT与比特币、以太币不同之处也是在这里,每颗NFT都有它的独立价值,而每颗比特币或以太币的价值相等。
NFT最重要的特性为不可分割,一只以太猫咪不能分割交换,就只能整只交换或贩售,分割了就没有价值,当然它无法分割。而BTC或WDC可以分割,拿到的1BTC或1WDC可以切分两份,两份0.5个BTC或WDC,两份0.5个BTC或WDC还是有1个BTC或WDC的价值。
02NFT(非同质化代币)的特征
1标准化
NFT具有一些标准化功能,包括所有权、转让等。所有非同质化代币都有这些功能。任何开发人员都可以利用该功能来构建自己的NFT。
2通用性
NFT是通用的,也就是说,任何想要使用NFT的应用都可以使用它。因为区块链是公开可访问的,而且每个人都可以阅读部署NFT的智能合约。
3流动性
与加密资产相关的流动性市场非常庞大。人们可以根据自己的需求轻松地将它们换成现金或其他加密货币。因此,NFT具有很高的流动性。
4不变性
区块链因不变性而闻名。NFT是通过智能合约实现的。这使得NFT不可变,即用户无法将其NFT更改为其他NFT。NFT的所有权将永久记录于区块链中,除非用户决定将其转让给其他用户。
5可编程
NFT是通过智能合约实现的。NFT代币可被增强并包含其他复杂功能。
1ERC721
它最初由CryptoKitties创造,也是代表非同质化数字资产的第一个标准。ERC721是可继承的Solidity智能合约标准。人们可以轻松地从OpenZeppelin库中继承,并将其用于编程基于NFT的项目。
2ERC1155
它最早由Enjin提出。它使人们能够实现半同质化的代币。ERC1155允许拥有独特资产种类,而非拥有独特资产。这些资产与ID相连接。例如,一个ID可以有20个名为“Swords”的资产,而另一个ID可以有30个名为“Guns”的资产。
3元数据
元数据用于定义单个代币的唯一特征。以加密猫为例,每只加密猫都有不同的颜色、形状、名称等。元数据通常以JSON形式表现
4链上
在这种情况下,每个NFT都与各自的元数据链接,并存储在区块链中。最大的缺点是以太坊中的存储空间有限。
5链下
在这种情况下,元数据存储在中心化系统(如AWS)或去中心化网络(如IPFS)中,并通过智能合约中的tokenURI参数链接到它们各自的NFT。
1收藏品
NFT通过加密猫在收藏品领域首次亮相。在加密猫游戏流行之后,NFT成为Axie Infinity等许多其他收藏品领域的热门选择。
2游戏
玩家花时间来获得游戏内奖励,但这些奖励无法在游戏外使用。然而基于区块链的NFT就解决了这一问题,因为其他游戏可以集成这些奖励。
3证书
NFT可用于识别颁发给个人的唯一证书。通常,基于NFT的证书是不可转让的。这些证书存储在区块链中,因此无法篡改。
加密领域已涌现出了越来越多的NFT标准。它们的功能各异。NFT的实现范围仅限于开发人员的想象力。最后,Wisdom Chain已经升级了合约脚本编程能力,大家也可以在Wisdom Chain链上发行NFT代币。
2. 如何挑选区块链类型产品,区块链类型怎么分
区块链,4种类型,知多少?——你好,我是心态,专注分享对区块链的认知与投资思考。希望能帮到你。
区块链根据不同的使用需求和场景,区块链分为:公有链、联盟链、私有链和混合链4种类型。
1.公有链
公有链,是指全世界任何节点的任何人,在任何地理位置,都可以进入系统读取数据、发送交易、竞争记账等参与共识的区块链。没有任何机构或个人可以篡改其中的数据,因此公有链是完全去中心化的。
比特币和以太坊都是公有链的代表。公有链一般通过发行代币(Token)来鼓励参与者竞争记账(即挖矿),以确保数据的安全性和共识更新。
比特币平均每10分钟产生1个区块,且其POW机制很难缩短区块时间,POS机制相对而言可缩短区块时间,但更易产生分叉。所以交易需要等待更多确认才被认为安全。
一般认为,比特币中的区块经过6个确认后才是足够安全的,这大概需要1个小时。这样的确认速度难以满足商业级的应用。因此,ETH及EOS等支持更多写入速度的公有链正在不断发展。
2.联盟链
联盟链是指有若干机构共同参与和管理的区块链,每个机构都运行N个节点。
联盟链的数据只允许系统内不同的机构进行读写和交易,通过数字证书的方式实现基于PKI的身份管理体系交易或提案的发起,以参与方共同签名验证来达成共识,因此不需要工作量证明(POW),也不存在数字货币(代币),提高了交易达成的效率,节约了大量计算成本(算力硬件投入和电力能源消耗)。
通常情况下,参与联盟链的节点会被划分不同的读写权限,能支持每秒1000次以上的数据写入。
3.私有链
私有链与公有链完全去中心化不同,私有链的进入权限由某个组织进行控制,各个节点参与资格由该组织授权控制。
由于参与的各个节点是有限且可控的,私有链往往拥有很快的处理速度,能支持每秒1000以上的数据写入,同时降低内部各个节点的交易成本。
节点可以实名参与,因此具有确认身份的金融属性。私有链的价值主要是提供安全、可追溯、不可篡改、自动执行的运算平台,可以同时防范来自内部和外部对数据的安全攻击或篡改,这在传统的系统中是很难做到的。
私有链的应用场景一般在企业内部,如分公司的库存管理,各地数据的汇总统计等,也可以用在政府的预算和执行等可以被公众监督的领域。大型金融集团目前也倾向于使用私有链技术。
4.混合链
当公有链和私有链的各自优势相结合时,就会出现混合链。混合链的开发难度大,但前景广阔。
未来市场上,一定会出现巨头型的底层技术和协议开发的公司,这些巨头公司会架设出不同用途的公有链、私有链或者联盟链,基于对性能和安全性及应用场景的不同需求,然后嫁接不同行业的应用。比如一条支持高并发的通信类公有链,一条侧重安全性的支付联盟链,等等。
(感谢阅读)
点个赞,点个关注,就是对我最大的支持,咱们明天见。
区块链是什么?普通人该如何投资区块链项目呢?区块链是一种分布式技术,具体的可以网络下技术的组成,普通人目前可以投资的有2个方向,一个是投资区块链企业的股票,这种有一定的风险,个人可以按照自己熟悉的来,另外就是投资虚拟货币,也就是类似比特币这种了,不过这种需要选择靠谱的老平台,年限久一点的,口碑一直不错的,可以看下AEX、火币这2家,年限久,长期理财的话,可以选择AEX理财超市
如何判断区块链项目是否值得投资一、项目详情
项目详情一般是由项目方发布在某些ICO平台上,由平台负责审核,发布时需提交详细的相关信息。可供用户查询。以下是我们需要参考的:
◆项目团队成员信息是否造假
◆官方网站是否近期备案
◆项目总额度是否合理
◆是否超量增发
◆项目代币分配是否合理
◆项目发展规划及开发计划是否清晰
二、产品分析
类型:应用类、平台类、底层技术类
根据不同的区块链项目进行对应的分析以判断该项目是否适合通过区块链技术开发,对比行业内现有的产品做分析,例如现在某个项目方要做一款去中心化的内容分发平台。我们可以参考行业内做的比较好的TOU条。作为内容分发领域的独角兽,今日头条从12年上线起发展至今,已经拥有5亿的注册用户,DAU更是接近一亿。
用户组成:广告主、内容制造者、内容阅读者、
内容生态:UGC+PGC内容产生模式已趋于完整,内容组成多元化,图文资讯+短视频+直播
盈利模式:电商广告、信息流广告进行流量变现,
产品优势:用户量大,基于特定算法的信息分类推送,用户体验良好,用户习惯养成
融资经历:C轮10亿美元
基于以上信息对照项目的白皮书,确定此区块链项目真正的优势在哪里?如果项目白皮书不能够清晰的描述出产品的架构,只是空谈概念,那么很大可能上这个产品是不靠谱的。
三、市场分析
竞品:不仅有新浪、搜狐、腾讯、网易、凤凰、一点资讯、zaker、网络新闻、知乎日报等一些大平台。还有一系列垂直类类内容产品与之竞争。
竞争度:大量用户已养成固定的信息获取习惯,预示着新平台在获客成本上会大幅度增加
四、用户及使用场景分析
◆内容阅读者:获取资讯、娱乐放松、技能学习、情感表达、刺激眼球、政策解读、消费决策等。
◆广告商:引流,产品促销,打造品牌调性。
◆内容制造者:优质内容制造,接广告,赚广告费。
五、行业问题分析
◆平台对有效流量的界定及推荐机制导致的内容制造者收益不稳定
◆广告植入对用户体验的影响
◆某些类型产品投放信息流广告的效果不佳
附:某区块链众筹项目网站上近期项目整理
◆物联网:沃尔顿链
◆社交通讯平台:SNC、Matchpool
◆资产交易:OmiseGo、OpenANX、Bytom比原链、公信宝
◆云存储技术:STORJ、iex.ec
◆应用分发、MobileGo
◆电子钱包:Status、Monaco
◆内容分发:YOYOW
◆智能投资:币飞
◆智能合约:Aeternity
◆数字广告:优WiFi、BAT
◆公司:Dcorp
◆ICO众筹、风投基金:Onplace
◆区块链交易:ICOcoin、量子链Qtum=
◆医疗:云医链HIS、医疗链
◆创业孵化器基金:Starta
◆区块链技术应用
◆数字资产:Tenx、瑞资链、ZenGold
◆游戏账号系统:ugChain
◆新媒体:云链
◆选举:选举链ELC
◆资产兑换:SWFT平台
◆版权:IPC知产链、印链
◆算力:SONM
六、技术实力分析
◆核心技术是否有创新性和行业前瞻性
◆技术可行性及实现难度
◆产品类型是否能充分发挥区块链技术优势
◆该项目是否发行测试网络
◆项目是否开源,一般开源的项目都会上传到github,
◆基于哪条区块链进行开发
◆使用哪种共识机制
七、团队组成分析
◆团队中是否有大牛
无论是技术大牛:如stratisCEOChrisTrew,Bancor创始团队的EyalHertzog,如Tenx的投资人包括了以太坊创始人VitalikButerin和分布式资本合伙人沈波等。
还是某区块链产品众筹项目的发起人是前比特币中国的联合创始人杨某科,发布的ICOcoin项目。又或者区块链项目的发起人是国内比特币“首富”李某来,发布Pressone项目。都能从某种意义上说明这个项目是靠谱的。当然也存在特例,比如近期的李某来,一个项目搞的整个圈子里天怒人怨。
◆团队构架是否科学
法律顾问、行业咨询顾问、项目管理委员会、第三方机构
八、参考区块链项目评级网站
相对合理,评级网站有不少,各个平台的评级标准也不尽相同,可能会出现同一个项目在不同平台上给出的评级差距很大,这个时候就需要我们
自身对区块链相关基础知识有深刻的了解,够具备一定的自我判断能力。千万不要相信专家大牛,不少所谓的专家有可能是跟区块链项目发起方存在利益捆绑。
九、直接交流
最后一点,也是最重要的。无论是面对面的路演,还是论坛社区或者社群进行交流,都能够让人直观去了解这个项目的发起方是否靠谱。无论是对于区块链产品项目还是技术上一些问题都能够由项目方进行解答。是否靠谱,一验便知。
区块链的分类目前区块链分为三类,其中混合区块链和私有区块链可视为:广义私有链,公共区块链公共区块链。意味着世界上任何个人或团体都可以发送交易,交易可以由区块链有效确认,任何人都可以参与其共识过程。公共区块链是目前最早的区块链,也是使用最广泛的区块链。每个比特币系列的虚拟数字货币都以公共的区块链为基础,世界上只有一个区块链对应这种货币。
拓展资料
1.工业区块链行业blockchains:组内多个预选节点指定为记账员,每个区块的生成由所有预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不干扰核算过程(本质上,它是管理簿记,但它成为分布式簿记。多少预先选择的节点和如何确定每个块的簿记员成为区块链的主要风险点),其他任何人都可以通过区块链的开放API进行有限的查询。私人区块链Private区块链((privateblockchains)):只有区块链的总账技术用于记账。它可以是一个公司或个人独家书面许可的区块链。这个链与其他分布式存储方案没有太大的不同。目前(2015年12月),保守的巨头(传统金融)想要尝试私有的区块链,而公共链的应用,如比特币,已经产业化,私有链的应用产品还在探索中。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的一种新的应用模式。区块链是比特币的一个重要概念。本质上,它是一个去中心化的数据库。
2.同时,作为比特币的底层技术,它是一系列与加密方法相关联的数据块。每个数据块包含一批比特币网络交易信息,验证其信息的有效性(防伪)并生成下一个区块。事实上,区块链这个词并没有出现在英文原版的比特币白皮书中,而是出现在区块链中。在最早的比特币白皮书中,区块链被翻译为区块链。这是汉语“区块链”最早出现的时间。国家互联网信息办公室于2019年1月10日发布《区块链信息服务管理条例》,自2019年2月15日起施行。从狭义上讲,区块链是一种按时间顺序组合数据块的链式数据结构,以及由密码学保证的防篡改和可伪造的分布式分类帐。广义上讲,区块链技术是一种新的分布式基础设施和计算方法,它使用区块链数据结构来验证和存储数据,使用分布式节点共识算法来生成和更新数据,使用密码学来确保数据传输和访问的安全性,采用由自动脚本代码组成的智能契约对数据进行编程和操作。
3. tcc是什么币
TCC币,英文全称是The ChampCoin,是在以太坊平台上发行的一种加密货币令牌。它不是预挖Cry CryoCurrency,这意味着TCC币矿工创造市场。通过挖掘硬币,交易被添加并记录到由所有过去交易组成的The ChampCoin分类帐中。账簿类似于一连串的块,它们确认已经进行了一定数量的交易。The ChampCoin官方不是政府或任何银行打印The ChampCoin,因为The ChampCoin不是物理格式。这种货币在中央银行的影子里并没有实际印刷出来,这对人们是不负责任的,而且TCC币制定了自己的规则。
拓展资料:
1、可以随时随地向任何人发送硬币,并在分钟后到达后,只要TCC币块检查网络处理付款。如果您正在销售产品或服务,或者您想购买任何服务或产品,那么您可以通过TCC币快速获得或发送付款。每个用户都是The ChampCoin的矿工。在每笔交易中都会产生奖励积分,采矿的最后日期是:2022年7月1日。
2、The ChampCoin币试图以最低的成本成为最安全的CryptoCoin,通过奖励所有用户来加强网络。使用The ChampCoin创建您自己的资产,可以按照您喜欢的任何方式进行分配。您将能够安全,轻松,快速地学习如何存储,获取,出售,投入,投机和投资TCC币。TCC币是De是什么币 Centralized Cryptocurrency,您可以从TCC币 API部分获取The Champcoin的所有API。
3、The ChampCoin在TCC Exchange交易所交易。TCC Exchange是最大的交易所,其中超过100万用户在TCC币上进行交易。您可以使用TCC Exchange App在全球范围内购买和出售TCC。用户还可以像使用TCC EXCHANGE一样方便地发送和接收TCC币。
4、快速交易处理:TCC钱包是在世界范围内购买和销售THE CHAMPCOIN最简单快捷的方式。我们保证您的TCC币买入或卖出的最佳利率。快速购买/出售:在TCC Exchange上,您可以通过快速购买/出售TCC币。TCC交易所正在成为世界上最着名的Ecxhange,在几个月内有超过100万用户。安全:6位PIN和OTP锁定您的钱包和外发交易。立即购买TCC币:使用TCC Exchange,您可以通过BTC功能即时购买TCC币。
4. 如何找到区块链的密码,区块链的密钥是什么
【深度知识】区块链之加密原理图示(加密,签名)先放一张以太坊的架构图:
在学习的过程中主要是采用单个模块了学习了解的,包括P2P,密码学,网络,协议等。直接开始总结:
秘钥分配问题也就是秘钥的传输问题,如果对称秘钥,那么只能在线下进行秘钥的交换。如果在线上传输秘钥,那就有可能被拦截。所以采用非对称加密,两把钥匙,一把私钥自留,一把公钥公开。公钥可以在网上传输。不用线下交易。保证数据的安全性。
如上图,A节点发送数据到B节点,此时采用公钥加密。A节点从自己的公钥中获取到B节点的公钥对明文数据加密,得到密文发送给B节点。而B节点采用自己的私钥解密。
2、无法解决消息篡改。
如上图,A节点采用B的公钥进行加密,然后将密文传输给B节点。B节点拿A节点的公钥将密文解密。
1、由于A的公钥是公开的,一旦网上黑客拦截消息,密文形同虚设。说白了,这种加密方式,只要拦截消息,就都能解开。
2、同样存在无法确定消息来源的问题,和消息篡改的问题。
如上图,A节点在发送数据前,先用B的公钥加密,得到密文1,再用A的私钥对密文1加密得到密文2。而B节点得到密文后,先用A的公钥解密,得到密文1,之后用B的私钥解密得到明文。
1、当网络上拦截到数据密文2时,由于A的公钥是公开的,故可以用A的公钥对密文2解密,就得到了密文1。所以这样看起来是双重加密,其实最后一层的私钥签名是无效的。一般来讲,我们都希望签名是签在最原始的数据上。如果签名放在后面,由于公钥是公开的,签名就缺乏安全性。
2、存在性能问题,非对称加密本身效率就很低下,还进行了两次加密过程。
如上图,A节点先用A的私钥加密,之后用B的公钥加密。B节点收到消息后,先采用B的私钥解密,然后再利用A的公钥解密。
1、当密文数据2被黑客拦截后,由于密文2只能采用B的私钥解密,而B的私钥只有B节点有,其他人无法机密。故安全性最高。
2、当B节点解密得到密文1后,只能采用A的公钥来解密。而只有经过A的私钥加密的数据才能用A的公钥解密成功,A的私钥只有A节点有,所以可以确定数据是由A节点传输过来的。
经两次非对称加密,性能问题比较严重。
基于以上篡改数据的问题,我们引入了消息认证。经过消息认证后的加密流程如下:
当A节点发送消息前,先对明文数据做一次散列计算。得到一个摘要,之后将照耀与原始数据同时发送给B节点。当B节点接收到消息后,对消息解密。解析出其中的散列摘要和原始数据,然后再对原始数据进行一次同样的散列计算得到摘要1,比较摘要与摘要1。如果相同则未被篡改,如果不同则表示已经被篡改。
在传输过程中,密文2只要被篡改,最后导致的hash与hash1就会产生不同。
无法解决签名问题,也就是双方相互攻击。A对于自己发送的消息始终不承认。比如A对B发送了一条错误消息,导致B有损失。但A抵赖不是自己发送的。
在(三)的过程中,没有办法解决交互双方相互攻击。什么意思呢?有可能是因为A发送的消息,对A节点不利,后来A就抵赖这消息不是它发送的。
为了解决这个问题,故引入了签名。这里我们将(二)-4中的加密方式,与消息签名合并设计在一起。
在上图中,我们利用A节点的私钥对其发送的摘要信息进行签名,然后将签名+原文,再利用B的公钥进行加密。而B得到密文后,先用B的私钥解密,然后对摘要再用A的公钥解密,只有比较两次摘要的内容是否相同。这既避免了防篡改问题,有规避了双方攻击问题。因为A对信息进行了签名,故是无法抵赖的。
为了解决非对称加密数据时的性能问题,故往往采用混合加密。这里就需要引入对称加密,如下图:
在对数据加密时,我们采用了双方共享的对称秘钥来加密。而对称秘钥尽量不要在网络上传输,以免丢失。这里的共享对称秘钥是根据自己的私钥和对方的公钥计算出的,然后适用对称秘钥对数据加密。而对方接收到数据时,也计算出对称秘钥然后对密文解密。
以上这种对称秘钥是不安全的,因为A的私钥和B的公钥一般短期内固定,所以共享对称秘钥也是固定不变的。为了增强安全性,最好的方式是每次交互都生成一个临时的共享对称秘钥。那么如何才能在每次交互过程中生成一个随机的对称秘钥,且不需要传输呢?
那么如何生成随机的共享秘钥进行加密呢?
对于发送方A节点,在每次发送时,都生成一个临时非对称秘钥对,然后根据B节点的公钥和临时的非对称私钥可以计算出一个对称秘钥(KA算法-KeyAgreement)。然后利用该对称秘钥对数据进行加密,针对共享秘钥这里的流程如下:
对于B节点,当接收到传输过来的数据时,解析出其中A节点的随机公钥,之后利用A节点的随机公钥与B节点自身的私钥计算出对称秘钥(KA算法)。之后利用对称秘钥机密数据。
对于以上加密方式,其实仍然存在很多问题,比如如何避免重放攻击(在消息中加入Nonce),再比如彩虹表(参考KDF机制解决)之类的问题。由于时间及能力有限,故暂时忽略。
那么究竟应该采用何种加密呢?
主要还是基于要传输的数据的安全等级来考量。不重要的数据其实做好认证和签名就可以,但是很重要的数据就需要采用安全等级比较高的加密方案了。
密码套件是一个网络协议的概念。其中主要包括身份认证、加密、消息认证(MAC)、秘钥交换的算法组成。
在整个网络的传输过程中,根据密码套件主要分如下几大类算法:
秘钥交换算法:比如ECDHE、RSA。主要用于客户端和服务端握手时如何进行身份验证。
消息认证算法:比如SHA1、SHA2、SHA3。主要用于消息摘要。
批量加密算法:比如AES,主要用于加密信息流。
伪随机数算法:例如TLS1.2的伪随机函数使用MAC算法的散列函数来创建一个主密钥——连接双方共享的一个48字节的私钥。主密钥在创建会话密钥(例如创建MAC)时作为一个熵来源。
在网络中,一次消息的传输一般需要在如下4个阶段分别进行加密,才能保证消息安全、可靠的传输。
握手/网络协商阶段:
在双方进行握手阶段,需要进行链接的协商。主要的加密算法包括RSA、DH、ECDH等
身份认证阶段:
身份认证阶段,需要确定发送的消息的来源来源。主要采用的加密方式包括RSA、DSA、ECDSA(ECC加密,DSA签名)等。
消息加密阶段:
消息加密指对发送的信息流进行加密。主要采用的加密方式包括DES、RC4、AES等。
消息身份认证阶段/防篡改阶段:
主要是保证消息在传输过程中确保没有被篡改过。主要的加密方式包括MD5、SHA1、SHA2、SHA3等。
ECC:EllipticCurvesCryptography,椭圆曲线密码编码学。是一种根据椭圆上点倍积生成公钥、私钥的算法。用于生成公私秘钥。
ECDSA:用于数字签名,是一种数字签名算法。一种有效的数字签名使接收者有理由相信消息是由已知的发送者创建的,从而发送者不能否认已经发送了消息(身份验证和不可否认),并且消息在运输过程中没有改变。ECDSA签名算法是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。主要用于身份认证阶段。
ECDH:也是基于ECC算法的霍夫曼树秘钥,通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,并且是这种共享秘钥是为当前的通信暂时性的随机生成的,通信一旦中断秘钥就消失。主要用于握手磋商阶段。
ECIES:是一种集成加密方案,也可称为一种混合加密方案,它提供了对所选择的明文和选择的密码文本攻击的语义安全性。ECIES可以使用不同类型的函数:秘钥协商函数(KA),秘钥推导函数(KDF),对称加密方案(ENC),哈希函数(HASH),H-MAC函数(MAC)。
ECC是椭圆加密算法,主要讲述了按照公私钥怎么在椭圆上产生,并且不可逆。ECDSA则主要是采用ECC算法怎么来做签名,ECDH则是采用ECC算法怎么生成对称秘钥。以上三者都是对ECC加密算法的应用。而现实场景中,我们往往会采用混合加密(对称加密,非对称加密结合使用,签名技术等一起使用)。ECIES就是底层利用ECC算法提供的一套集成(混合)加密方案。其中包括了非对称加密,对称加密和签名的功能。
metacharset="utf-8"
这个先订条件是为了保证曲线不包含奇点。
所以,随着曲线参数a和b的不断变化,曲线也呈现出了不同的形状。比如:
所有的非对称加密的基本原理基本都是基于一个公式K=kG。其中K代表公钥,k代表私钥,G代表某一个选取的基点。非对称加密的算法就是要保证该公式不可进行逆运算(也就是说G/K是无法计算的)。*
ECC是如何计算出公私钥呢?这里我按照我自己的理解来描述。
我理解,ECC的核心思想就是:选择曲线上的一个基点G,之后随机在ECC曲线上取一个点k(作为私钥),然后根据kG计算出我们的公钥K。并且保证公钥K也要在曲线上。*
那么kG怎么计算呢?如何计算kG才能保证最后的结果不可逆呢?这就是ECC算法要解决的。
首先,我们先随便选择一条ECC曲线,a=-3,b=7得到如下曲线:
在这个曲线上,我随机选取两个点,这两个点的乘法怎么算呢?我们可以简化下问题,乘法是都可以用加法表示的,比如22=2+2,35=5+5+5。那么我们只要能在曲线上计算出加法,理论上就能算乘法。所以,只要能在这个曲线上进行加法计算,理论上就可以来计算乘法,理论上也就可以计算k*G这种表达式的值。
曲线上两点的加法又怎么算呢?这里ECC为了保证不可逆性,在曲线上自定义了加法体系。
现实中,1+1=2,2+2=4,但在ECC算法里,我们理解的这种加法体系是不可能。故需要自定义一套适用于该曲线的加法体系。
ECC定义,在图形中随机找一条直线,与ECC曲线相交于三个点(也有可能是两个点),这三点分别是P、Q、R。
那么P+Q+R=0。其中0不是坐标轴上的0点,而是ECC中的无穷远点。也就是说定义了无穷远点为0点。
同样,我们就能得出P+Q=-R。由于R与-R是关于X轴对称的,所以我们就能在曲线上找到其坐标。
P+R+Q=0,故P+R=-Q,如上图。
以上就描述了ECC曲线的世界里是如何进行加法运算的。
从上图可看出,直线与曲线只有两个交点,也就是说直线是曲线的切线。此时P,R重合了。
也就是P=R,根据上述ECC的加法体系,P+R+Q=0,就可以得出P+R+Q=2P+Q=2R+Q=0
于是乎得到2P=-Q(是不是与我们非对称算法的公式K=kG越来越近了)。
于是我们得出一个结论,可以算乘法,不过只有在切点的时候才能算乘法,而且只能算2的乘法。
假若2可以变成任意个数进行想乘,那么就能代表在ECC曲线里可以进行乘法运算,那么ECC算法就能满足非对称加密算法的要求了。
那么我们是不是可以随机任何一个数的乘法都可以算呢?答案是肯定的。也就是点倍积计算方式。
选一个随机数k,那么k*P等于多少呢?
我们知道在计算机的世界里,所有的都是二进制的,ECC既然能算2的乘法,那么我们可以将随机数k描述成二进制然后计算。假若k=151=10010111
由于2P=-Q所以这样就计算出了kP。这就是点倍积算法。所以在ECC的曲线体系下是可以来计算乘法,那么以为这非对称加密的方式是可行的。
至于为什么这样计算是不可逆的。这需要大量的推演,我也不了解。但是我觉得可以这样理解:
我们的手表上,一般都有时间刻度。现在如果把1990年01月01日0点0分0秒作为起始点,如果告诉你至起始点为止时间流逝了整1年,那么我们是可以计算出现在的时间的,也就是能在手表上将时分秒指针应该指向00:00:00。但是反过来,我说现在手表上的时分秒指针指向了00:00:00,你能告诉我至起始点算过了有几年了么?
ECDSA签名算法和其他DSA、RSA基本相似,都是采用私钥签名,公钥验证。只不过算法体系采用的是ECC的算法。交互的双方要采用同一套参数体系。签名原理如下:
在曲线上选取一个无穷远点为基点G=(x,y)。随机在曲线上取一点k作为私钥,K=k*G计算出公钥。
签名过程:
生成随机数R,计算出RG.
根据随机数R,消息M的HASH值H,以及私钥k,计算出签名S=(H+kx)/R.
将消息M,RG,S发送给接收方。
签名验证过程:
接收到消息M,RG,S
根据消息计算出HASH值H
根据发送方的公钥K,计算HG/S+xK/S,将计算的结果与RG比较。如果相等则验证成功。
公式推论:
HG/S+xK/S=HG/S+x(kG)/S=(H+xk)/GS=RG
在介绍原理前,说明一下ECC是满足结合律和交换律的,也就是说A+B+C=A+C+B=(A+C)+B。
这里举一个WIKI上的例子说明如何生成共享秘钥,也可以参考AliceAndBob的例子。
Alice与Bob要进行通信,双方前提都是基于同一参数体系的ECC生成的公钥和私钥。所以有ECC有共同的基点G。
生成秘钥阶段:
Alice采用公钥算法KA=ka*G,生成了公钥KA和私钥ka,并公开公钥KA。
Bob采用公钥算法KB=kb*G,生成了公钥KB和私钥kb,并公开公钥KB。
计算ECDH阶段:
Alice利用计算公式Q=ka*KB计算出一个秘钥Q。
Bob利用计算公式Q'=kb*KA计算出一个秘钥Q'。
共享秘钥验证:
Q=kaKB=ka*kb*G=ka*G*kb=KA*kb=kb*KA=Q'
故双方分别计算出的共享秘钥不需要进行公开就可采用Q进行加密。我们将Q称为共享秘钥。
在以太坊中,采用的ECIEC的加密套件中的其他内容:
1、其中HASH算法采用的是最安全的SHA3算法Keccak。
2、签名算法采用的是ECDSA
3、认证方式采用的是H-MAC
4、ECC的参数体系采用了secp256k1,其他参数体系参考这里
H-MAC全程叫做Hash-.其模型如下:
在以太坊的UDP通信时(RPC通信加密方式不同),则采用了以上的实现方式,并扩展化了。
首先,以太坊的UDP通信的结构如下:
其中,sig是经过私钥加密的签名信息。mac是可以理解为整个消息的摘要,ptype是消息的事件类型,data则是经过RLP编码后的传输数据。
其UDP的整个的加密,认证,签名模型如下:
区块链密码算法是怎样的?
区块链作为新兴技术受到越来越广泛的关注,是一种传统技术在互联网时代下的新的应用,这其中包括分布式数据存储技术、共识机制和密码学等。随着各种区块链研究联盟的创建,相关研究得到了越来越多的资金和人员支持。区块链使用的Hash算法、零知识证明、环签名等密码算法:
Hash算法
哈希算法作为区块链基础技术,Hash函数的本质是将任意长度(有限)的一组数据映射到一组已定义长度的数据流中。若此函数同时满足:
(1)对任意输入的一组数据Hash值的计算都特别简单;
(2)想要找到2个不同的拥有相同Hash值的数据是计算困难的。
满足上述两条性质的Hash函数也被称为加密Hash函数,不引起矛盾的情况下,Hash函数通常指的是加密Hash函数。对于Hash函数,找到使得被称为一次碰撞。当前流行的Hash函数有MD5,SHA1,SHA2,SHA3。
比特币使用的是SHA256,大多区块链系统使用的都是SHA256算法。所以这里先介绍一下SHA256。
1、SHA256算法步骤
STEP1:附加填充比特。对报文进行填充使报文长度与448模512同余(长度=448mod512),填充的比特数范围是1到512,填充比特串的最高位为1,其余位为0。
STEP2:附加长度值。将用64-bit表示的初始报文(填充前)的位长度附加在步骤1的结果后(低位字节优先)。
STEP3:初始化缓存。使用一个256-bit的缓存来存放该散列函数的中间及最终结果。
STEP4:处理512-bit(16个字)报文分组序列。该算法使用了六种基本逻辑函数,由64步迭代运算组成。每步都以256-bit缓存值为输入,然后更新缓存内容。每步使用一个32-bit常数值Kt和一个32-bitWt。其中Wt是分组之后的报文,t=1,2,...,16。
STEP5:所有的512-bit分组处理完毕后,对于SHA256算法最后一个分组产生的输出便是256-bit的报文。
作为加密及签名体系的核心算法,哈希函数的安全性事关整个区块链体系的底层安全性。所以关注哈希函数的研究现状是很有必要的。
2、Hash函的研究现状
2004年我国密码学家王小云在国际密码讨论年会(CRYPTO)上展示了MD5算法的碰撞并给出了第一个实例(CollisionsforhashfunctionsMD4,MD5,HAVAL-128andRIPEMD,rumpsessionofCRYPTO2004,,EuroCrypt2005)。该攻击复杂度很低,在普通计算机上只需要几秒钟的时间。2005年王小云教授与其同事又提出了对SHA-1算法的碰撞算法,不过计算复杂度为2的63次方,在实际情况下难以实现。
2017年2月23日谷歌安全博客上发布了世界上第一例公开的SHA-1哈希碰撞实例,在经过两年的联合研究和花费了巨大的计算机时间之后,研究人员在他们的研究网站SHAttered上给出了两个内容不同,但是具有相同SHA-1消息摘要的PDF文件,这就意味着在理论研究长期以来警示SHA-1算法存在风险之后,SHA-1算法的实际攻击案例也浮出水面,同时也标志着SHA-1算法终于走向了生命的末期。
NIST于2007年正式宣布在全球范围内征集新的下一代密码Hash算法,举行SHA-3竞赛。新的Hash算法将被称为SHA-3,并且作为新的安全Hash标准,增强现有的FIPS180-2标准。算法提交已于2008年10月结束,NIST分别于2009年和2010年举行2轮会议,通过2轮的筛选选出进入最终轮的算法,最后将在2012年公布获胜算法。公开竞赛的整个进程仿照高级加密标准AES的征集过程。2012年10月2日,Keccak被选为NIST竞赛的胜利者,成为SHA-3。
Keccak算法是SHA-3的候选人在2008年10月提交。Keccak采用了创新的的“海绵引擎”散列消息文本。它设计简单,方便硬件实现。Keccak已可以抵御最小的复杂度为2n的攻击,其中N为散列的大小。它具有广泛的安全边际。目前为止,第三方密码分析已经显示出Keccak没有严重的弱点。
KangarooTwelve算法是最近提出的Keccak变种,其计算轮次已经减少到了12,但与原算法比起来,其功能没有调整。
零知识证明
在密码学中零知识证明(zero-knowledgeproof,ZKP)是一种一方用于向另一方证明自己知晓某个消息x,而不透露其他任何和x有关的内容的策略,其中前者称为证明者(Prover),后者称为验证者(Verifier)。设想一种场景,在一个系统中,所有用户都拥有各自全部文件的备份,并利用各自的私钥进行加密后在系统内公开。假设在某个时刻,用户Alice希望提供给用户Bob她的一部分文件,这时候出现的问题是Alice如何让Bob相信她确实发送了正确的文件。一个简单地处理办法是Alice将自己的私钥发给Bob,而这正是Alice不希望选择的策略,因为这样Bob可以轻易地获取到Alice的全部文件内容。零知识证明便是可以用于解决上述问题的一种方案。零知识证明主要基于复杂度理论,并且在密码学中有广泛的理论延伸。在复杂度理论中,我们主要讨论哪些语言可以进行零知识证明应用,而在密码学中,我们主要讨论如何构造各种类型的零知识证明方案,并使得其足够优秀和高效。
环签名群签名
1、群签名
在一个群签名方案中,一个群体中的任意一个成员可以以匿名的方式代表整个群体对消息进行签名。与其他数字签名一样,群签名是可以公开验证的,且可以只用单个群公钥来验证。群签名一般流程:
(1)初始化,群管理者建立群资源,生成对应的群公钥(GroupPublicKey)和群私钥(GroupPrivateKey)群公钥对整个系统中的所有用户公开,比如群成员、验证者等。
(2)成员加入,在用户加入群的时候,群管理者颁发群证书(GroupCertificate)给群成员。
(3)签名,群成员利用获得的群证书签署文件,生成群签名。
(4)验证,同时验证者利用群公钥仅可以验证所得群签名的正确性,但不能确定群中的正式签署者。
(5)公开,群管理者利用群私钥可以对群用户生成的群签名进行追踪,并暴露签署者身份。
2、环签名
2001年,Rivest,shamir和Tauman三位密码学家首次提出了环签名。是一种简化的群签名,只有环成员没有管理者,不需要环成员间的合作。环签名方案中签名者首先选定一个临时的签名者集合,集合中包括签名者。然后签名者利用自己的私钥和签名集合中其他人的公钥就可以独立的产生签名,而无需他人的帮助。签名者集合中的成员可能并不知道自己被包含在其中。
环签名方案由以下几部分构成:
(1)密钥生成。为环中每个成员产生一个密钥对(公钥PKi,私钥SKi)。
(2)签名。签名者用自己的私钥和任意n个环成员(包括自己)的公钥为消息m生成签名a。
(3)签名验证。验证者根据环签名和消息m,验证签名是否为环中成员所签,如果有效就接收,否则丢弃。
环签名满足的性质:
(1)无条件匿名性:攻击者无法确定签名是由环中哪个成员生成,即使在获得环成员私钥的情况下,概率也不超过1/n。
(2)正确性:签名必需能被所有其他人验证。
(3)不可伪造性:环中其他成员不能伪造真实签名者签名,外部攻击者即使在获得某个有效环签名的基础上,也不能为消息m伪造一个签名。
3、环签名和群签名的比较
(1)匿名性。都是一种个体代表群体签名的体制,验证者能验证签名为群体中某个成员所签,但并不能知道为哪个成员,以达到签名者匿名的作用。
(2)可追踪性。群签名中,群管理员的存在保证了签名的可追
5. rlc是什么币
RLC 币又名云算宝币,是 iEx.ec 退出发行的平台代币。 RLC 币是一种数字货币。 iEx.ec 旨在提供区块链运行所需的可扩展性内容,立志做到安全可靠、数据集清晰、容易访问服务器和计算资源分布式的应用程序。这个技术得依靠于以太坊。与此同时,为了高性能计算的需求,社区允许建立一种虚拟的云基础构架。 iEx.ec 平台利用的是在计算机领域里相当成熟的一套技术理念。
随着人类文化的发展,信息科技的不断进步,一些云计算、互联网区块链技术的不断演变推进,全世界的支付方式都在发生巨大的变革。 2019 年中, 在脸书平台上 主推的加密货币 Libra 震撼上线,并发布白皮书宣布要建立一套全球货币金融体系,至此,数字货币引起了世界各地市场的广泛关注,引起世界各地对于数字货币显示出更加积极的良好态度。 Libra 货币平台还表示正在与其他国家的央行合作,让其平台用户增进对“央行数字货币”概念的理解,更好的推进其平台理念。