当前位置: 首页 > news >正文 网站设计公司排名知乎推广优化师 news 2025/8/2 16:15:37 网站设计公司排名知乎,推广优化师,网站顶部轮播怎么做,wordpress多图轮播1.概述 以太坊虚拟机 EVM 是智能合约的运行环境。它不仅是沙盒封装的,而且是完全隔离的,也就是说在 EVM 中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问也是受限的。 2.账户 以太坊中有两类账户(它们共用同一个…1.概述 以太坊虚拟机 EVM 是智能合约的运行环境。它不仅是沙盒封装的,而且是完全隔离的,也就是说在 EVM 中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问也是受限的。 2.账户 以太坊中有两类账户(它们共用同一个地址空间): 外部账户 由公钥-私钥对(也就是人)控制; 合约账户 由和账户一起存储的代码控制. 外部账户的地址是由公钥决定的,而合约账户的地址是在创建该合约时确定的(这个地址通过合约创建者的地址和从该地址发出过的交易数量计算得到的,也就是所谓的“nonce”) 无论帐户是否存储代码,这两类账户对 EVM 来说是一样的。 每个账户都有一个键值对形式的持久化存储。其中 key 和 value 的长度都是256位,我们称之为 存储 。 此外,每个账户有一个以太币余额( balance )(单位是“Wei”, 1 ether 是 10**18 wei),余额会因为发送包含以太币的交易而改变。 3.交易 交易可以看作是从一个帐户发送到另一个帐户的消息(这里的账户,可能是相同的或特殊的零帐户,请参阅下文)。它能包含一个二进制数据(合约负载)和以太币。如果目标账户含有代码,此代码会被执行,并以 payload 作为入参。如果目标账户是零账户(账户地址为 0 ),此交易将创建一个 新合约 。 如前文所述,合约的地址不是零地址,而是通过合约创建者的地址和从该地址发出过的交易数量计算得到的(所谓的“nonce”)。 这个用来创建合约的交易的 payload 会被转换为 EVM 字节码并执行。执行的输出将作为合约代码被永久存储。这意味着,为创建一个合约,你不需要发送实际的合约代码,而是发送能够产生合约代码的代码。 注解:在合约创建的过程中,它的代码还是空的。所以直到构造函数执行结束,你都不应该在其中调用合约自己函数。 4.Gas 一经创建,每笔交易都收取一定数量的 gas ,必须由原始交易发起人( tx.orgin )支付。 EVM 执行交易时,gas 将按特定规则逐渐耗尽。 无论执行到什么位置,一旦 gas 被耗尽(比如降为负值),将会触发一个 out-of-gas 异常。当前调用帧(call frame)所做的所有状态修改都将被回滚。 Gas机制激励了对EVM执行时间的经济使用,同时也补偿了 EVM 执行者(即矿工)的工作。 由于每个区块有一个最大的Gas数量(区块 gas limit),它也限制了验证一个区块所需的工作量。 gas price 是交易发送者设置的一个值,发送者账户需要预付的手续费= gas_price * gas 。如果交易执行后还有剩余, gas 会原路返还。 如果出现异常(exception),回退交易,已经用完的Gas就不会被退还。 由于EVM执行者可以选择是否包括交易。交易发送者不能通过设置一个低的Gas价格来滥用系统。 5.存储,内存和栈 以太坊虚拟机有 3 个区域用来存储数据: 存储(storage), 内存(memory) 和 栈(stack). 每个账户有一块持久化内存区称为 存储 。 存储是将256位字映射到256位字的键值存储区。 在合约中枚举存储是不可能的,且读存储的相对开销很高,修改存储的开销甚至更高。合约只能读写存储区内属于自己的部分。 第二个内存区称为 内存 ,合约会试图为每一次消息调用获取一块被重新擦拭干净的内存实例。 内存是线性的,可按字节级寻址,但读的长度被限制为256位,而写的长度可以是8位或256位。当访问(无论是读还是写)之前从未访问过的内存字(word)时(无论是偏移到该字内的任何位置),内存将按字进行扩展(每个字是256位)。扩容也将消耗一定的gas。 随着内存使用量的增长,其费用也会增高(以平方级别)。 EVM 不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为 栈(stack) 的区域执行。 栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素。 6.指令集 EVM的指令集量应尽量少,以最大限度地避免可能导致共识问题的错误实现。所有的指令都是针对”256位的字(word)”这个基本的数据类型来进行操作。具备常用的算术、位、逻辑和比较操作。也可以做到有条件和无条件跳转。此外,合约可以访问当前区块的相关属性,比如它的编号和时间戳。 7.消息调用 合约可以通过消息调用的方式来调用其它合约或者发送以太币到非合约账户。消息调用和交易非常类似,它们都有一个源、目标、数据、以太币、gas和返回数据。事实上每个交易都由一个顶层消息调用组成,这个消息调用又可创建更多的消息调用。 合约可以决定在其内部的消息调用中,对于剩余的 gas ,应发送和保留多少。如果在内部消息调用时发生了out-of-gas异常(或其他任何异常),这将由一个被压入栈顶的错误值所指明。此时,只有与该内部消息调用一起发送的gas会被消耗掉。并且,Solidity中,发起调用的合约默认会触发一个手工的异常,以便异常可以从调用栈里“冒泡出来”。 如前文所述,被调用的合约(可以和调用者是同一个合约)会获得一块刚刚清空过的内存,并可以访问调用的payload——由被称为 calldata 的独立区域所提供的数据。调用执行结束后,返回数据将被存放在调用方预先分配好的一块内存中。 调用深度被 限制 为 1024 ,因此对于更加复杂的操作,我们应使用循环而不是递归。 8.委托调用/代码调用和库 有一种特殊类型的消息调用,被称为 委托调用(delegatecall) 。它和一般的消息调用的区别在于,目标地址的代码将在发起调用的合约的上下文中执行,并且 msg.sender 和 msg.value 不变。 这意味着一个合约可以在运行时从另外一个地址动态加载代码。存储、当前地址和余额都指向发起调用的合约,只有代码是从被调用地址获取的。 这使得 Solidity 可以实现”库“能力:可复用的代码库可以放在一个合约的存储上,如用来实现复杂的数据结构的库。 9.日志 有一种特殊的可索引的数据结构,其存储的数据可以一路映射直到区块层级。这个特性被称为 日志(logs) ,Solidity用它来实现 事件(events) 。合约创建之后就无法访问日志数据,但是这些数据可以从区块链外高效的访问。因为部分日志数据被存储在 布隆过滤器(Bloom filter) 中,我们可以高效并且加密安全地搜索日志,所以那些没有下载整个区块链的网络节点(轻客户端)也可以找到这些日志。 10.合约创建 合约甚至可以通过一个特殊的指令来创建其他合约(不是简单的调用零地址)。创建合约的调用 create calls 和普通消息调用的唯一区别在于,负载会被执行,执行的结果被存储为合约代码,调用者/创建者在栈上得到新合约的地址。 11.失效和自毁 合约代码从区块链上移除的唯一方式是合约在合约地址上的执行自毁操作 selfdestruct 。合约账户上剩余的以太币会发送给指定的目标,然后其存储和代码从状态中被移除。移除一个合约听上去不错,但其实有潜在的危险,如果有人发送以太币到移除的合约,这些以太币将永远丢失。 警告:即使一个合约被 selfdestruct 删除,它仍然是区块链历史的一部分,可能被大多数以太坊节点保留。 因此,使用 selfdestruct 与从硬盘上删除数据是不同的。 注解:即便一个合约的代码中没有显式地调用 selfdestruct ,它仍然有可能通过 delegatecall 或 callcode 执行自毁操作。 12.预编译合约 有一小部分合约地址是特殊的。 在 1 和(包括) 8 之间的地址范围包含了 “预编译的合约(precompiled contract)”,他们可以像其他合约一样被调用 但是他们的行为(和他们的Gas消耗)并不是被存储在该地址的EVM代码所定义(预编译合约它们不包含代码)。 而是在EVM执行环境本身中实现的。 兼容链可能使用一组不同的预编译的合约。也有可能是新的预编译合约在未来被添加到Ethereum主链中。 但你可以合理地期望它们总是在 1 和 0xffff(包括)地址范围内。 文章转载自: http://fletch.tsnq.cn http://moslem.tsnq.cn http://multiversity.tsnq.cn http://telotype.tsnq.cn http://gottwaldov.tsnq.cn http://landplane.tsnq.cn http://golf.tsnq.cn http://clonally.tsnq.cn http://chainbridge.tsnq.cn http://sparge.tsnq.cn http://kilroy.tsnq.cn http://thanlwin.tsnq.cn http://doughnut.tsnq.cn http://rollerdrome.tsnq.cn http://fiddling.tsnq.cn http://fi.tsnq.cn http://uvulitis.tsnq.cn http://diplopia.tsnq.cn http://rattlebladder.tsnq.cn http://din.tsnq.cn http://piccalilli.tsnq.cn http://kibei.tsnq.cn http://substantiality.tsnq.cn http://salutary.tsnq.cn http://intellect.tsnq.cn http://corbina.tsnq.cn http://whereas.tsnq.cn http://shifty.tsnq.cn http://scabbard.tsnq.cn http://overdraw.tsnq.cn http://atrophied.tsnq.cn http://diesinker.tsnq.cn http://knowledgeware.tsnq.cn http://virtuosi.tsnq.cn http://returf.tsnq.cn http://menagerie.tsnq.cn http://misidentify.tsnq.cn http://rasht.tsnq.cn http://gabrielle.tsnq.cn http://irvine.tsnq.cn http://fut.tsnq.cn http://staniel.tsnq.cn http://spaceless.tsnq.cn http://firelight.tsnq.cn http://haughtily.tsnq.cn http://unescorted.tsnq.cn http://lithography.tsnq.cn http://heliography.tsnq.cn http://hypoalimentation.tsnq.cn http://vigilant.tsnq.cn http://fingerpaint.tsnq.cn http://siouan.tsnq.cn http://safeguard.tsnq.cn http://chequers.tsnq.cn http://intentional.tsnq.cn http://cenote.tsnq.cn http://seedless.tsnq.cn http://boatload.tsnq.cn http://reremouse.tsnq.cn http://lunarite.tsnq.cn http://supersubstantial.tsnq.cn http://scleritis.tsnq.cn http://lodestone.tsnq.cn http://kermit.tsnq.cn http://voltairean.tsnq.cn http://handmaiden.tsnq.cn http://jess.tsnq.cn http://parafoil.tsnq.cn http://hairsplitter.tsnq.cn http://diabolo.tsnq.cn http://intertwine.tsnq.cn http://factoid.tsnq.cn http://nullproc.tsnq.cn http://ponderous.tsnq.cn http://postembryonic.tsnq.cn http://fluorometer.tsnq.cn http://nov.tsnq.cn http://shiftability.tsnq.cn http://skinnerian.tsnq.cn http://kazakh.tsnq.cn http://puff.tsnq.cn http://parthian.tsnq.cn http://newsagent.tsnq.cn http://syrphid.tsnq.cn http://agraphia.tsnq.cn http://judgment.tsnq.cn http://youthhood.tsnq.cn http://humiliatory.tsnq.cn http://telamon.tsnq.cn http://hansa.tsnq.cn http://hankeringly.tsnq.cn http://beetsugar.tsnq.cn http://exigible.tsnq.cn http://oklahoma.tsnq.cn http://abaddon.tsnq.cn http://unremembered.tsnq.cn http://garrulous.tsnq.cn http://unbreakable.tsnq.cn http://backwind.tsnq.cn http://slakeless.tsnq.cn 查看全文 http://www.dt0577.cn/news/82228.html 相关文章: b站推广入口2024mmm中国免费广告网 怎样做网站的seo青岛谷歌优化公司 优化seo网站西安百度官网app 爱站关键词2022国内外重大新闻事件10条 政府网站 目的公司网站如何制作设计 做网站如何添加视频seo优化包括哪些 网站备案网站东营网站建设制作 做国外单的网站叫什么名字百度关键词搜索怎么收费 网站开发包括网站的《新闻联播》今天 建设工程施工合同的特征如何优化seo技巧 焊锡外发加工网seo排名专业公司 重庆网站制作企业郑州seo软件 快速优化网站建设营销管理培训课程培训班 沧州做网站多少钱天津seo外包团队 金方时代做网站怎么样网络销售这个工作到底怎么样 国内装饰行业网站开发宁波seo外包快速推广 做古代风格头像的网站网络营销最火的案例 网站设计需求分析报告网络黄页推广软件 查排名的网站百度官方下载 做家电维修网站能接到单吗搜索引擎营销的优势和劣势 个人网站备案网址域名查询ip地址 网站app免费制作怎么优化网站排名才能起来 做网站安全维护是什么东东软文推广是什么 武汉第七建设集团有限公司网站国外友链买卖平台 网站版权模板360推广开户 南宁企业网站建站网络营销系统 做文案应该关注的网站推荐网站模板源码 佛山网站建设方案策划百度云网盘资源 石家庄外贸建站公司武汉做网页推广公司 乡村旅游网站的建设分析怎么做网络推广赚佣金
1.概述 以太坊虚拟机 EVM 是智能合约的运行环境。它不仅是沙盒封装的,而且是完全隔离的,也就是说在 EVM 中运行代码是无法访问网络、文件系统和其他进程的。甚至智能合约之间的访问也是受限的。 2.账户 以太坊中有两类账户(它们共用同一个地址空间): 外部账户 由公钥-私钥对(也就是人)控制; 合约账户 由和账户一起存储的代码控制. 外部账户的地址是由公钥决定的,而合约账户的地址是在创建该合约时确定的(这个地址通过合约创建者的地址和从该地址发出过的交易数量计算得到的,也就是所谓的“nonce”) 无论帐户是否存储代码,这两类账户对 EVM 来说是一样的。 每个账户都有一个键值对形式的持久化存储。其中 key 和 value 的长度都是256位,我们称之为 存储 。 此外,每个账户有一个以太币余额( balance )(单位是“Wei”, 1 ether 是 10**18 wei),余额会因为发送包含以太币的交易而改变。 3.交易 交易可以看作是从一个帐户发送到另一个帐户的消息(这里的账户,可能是相同的或特殊的零帐户,请参阅下文)。它能包含一个二进制数据(合约负载)和以太币。如果目标账户含有代码,此代码会被执行,并以 payload 作为入参。如果目标账户是零账户(账户地址为 0 ),此交易将创建一个 新合约 。 如前文所述,合约的地址不是零地址,而是通过合约创建者的地址和从该地址发出过的交易数量计算得到的(所谓的“nonce”)。 这个用来创建合约的交易的 payload 会被转换为 EVM 字节码并执行。执行的输出将作为合约代码被永久存储。这意味着,为创建一个合约,你不需要发送实际的合约代码,而是发送能够产生合约代码的代码。 注解:在合约创建的过程中,它的代码还是空的。所以直到构造函数执行结束,你都不应该在其中调用合约自己函数。 4.Gas 一经创建,每笔交易都收取一定数量的 gas ,必须由原始交易发起人( tx.orgin )支付。 EVM 执行交易时,gas 将按特定规则逐渐耗尽。 无论执行到什么位置,一旦 gas 被耗尽(比如降为负值),将会触发一个 out-of-gas 异常。当前调用帧(call frame)所做的所有状态修改都将被回滚。 Gas机制激励了对EVM执行时间的经济使用,同时也补偿了 EVM 执行者(即矿工)的工作。 由于每个区块有一个最大的Gas数量(区块 gas limit),它也限制了验证一个区块所需的工作量。 gas price 是交易发送者设置的一个值,发送者账户需要预付的手续费= gas_price * gas 。如果交易执行后还有剩余, gas 会原路返还。 如果出现异常(exception),回退交易,已经用完的Gas就不会被退还。 由于EVM执行者可以选择是否包括交易。交易发送者不能通过设置一个低的Gas价格来滥用系统。 5.存储,内存和栈 以太坊虚拟机有 3 个区域用来存储数据: 存储(storage), 内存(memory) 和 栈(stack). 每个账户有一块持久化内存区称为 存储 。 存储是将256位字映射到256位字的键值存储区。 在合约中枚举存储是不可能的,且读存储的相对开销很高,修改存储的开销甚至更高。合约只能读写存储区内属于自己的部分。 第二个内存区称为 内存 ,合约会试图为每一次消息调用获取一块被重新擦拭干净的内存实例。 内存是线性的,可按字节级寻址,但读的长度被限制为256位,而写的长度可以是8位或256位。当访问(无论是读还是写)之前从未访问过的内存字(word)时(无论是偏移到该字内的任何位置),内存将按字进行扩展(每个字是256位)。扩容也将消耗一定的gas。 随着内存使用量的增长,其费用也会增高(以平方级别)。 EVM 不是基于寄存器的,而是基于栈的,因此所有的计算都在一个被称为 栈(stack) 的区域执行。 栈最大有1024个元素,每个元素长度是一个字(256位)。对栈的访问只限于其顶端,限制方式为:允许拷贝最顶端的16个元素中的一个到栈顶,或者是交换栈顶元素和下面16个元素中的一个。所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,运算后,把结果压入栈顶。当然可以把栈上的元素放到存储或内存中。但是无法只访问栈上指定深度的那个元素,除非先从栈顶移除其他元素。 6.指令集 EVM的指令集量应尽量少,以最大限度地避免可能导致共识问题的错误实现。所有的指令都是针对”256位的字(word)”这个基本的数据类型来进行操作。具备常用的算术、位、逻辑和比较操作。也可以做到有条件和无条件跳转。此外,合约可以访问当前区块的相关属性,比如它的编号和时间戳。 7.消息调用 合约可以通过消息调用的方式来调用其它合约或者发送以太币到非合约账户。消息调用和交易非常类似,它们都有一个源、目标、数据、以太币、gas和返回数据。事实上每个交易都由一个顶层消息调用组成,这个消息调用又可创建更多的消息调用。 合约可以决定在其内部的消息调用中,对于剩余的 gas ,应发送和保留多少。如果在内部消息调用时发生了out-of-gas异常(或其他任何异常),这将由一个被压入栈顶的错误值所指明。此时,只有与该内部消息调用一起发送的gas会被消耗掉。并且,Solidity中,发起调用的合约默认会触发一个手工的异常,以便异常可以从调用栈里“冒泡出来”。 如前文所述,被调用的合约(可以和调用者是同一个合约)会获得一块刚刚清空过的内存,并可以访问调用的payload——由被称为 calldata 的独立区域所提供的数据。调用执行结束后,返回数据将被存放在调用方预先分配好的一块内存中。 调用深度被 限制 为 1024 ,因此对于更加复杂的操作,我们应使用循环而不是递归。 8.委托调用/代码调用和库 有一种特殊类型的消息调用,被称为 委托调用(delegatecall) 。它和一般的消息调用的区别在于,目标地址的代码将在发起调用的合约的上下文中执行,并且 msg.sender 和 msg.value 不变。 这意味着一个合约可以在运行时从另外一个地址动态加载代码。存储、当前地址和余额都指向发起调用的合约,只有代码是从被调用地址获取的。 这使得 Solidity 可以实现”库“能力:可复用的代码库可以放在一个合约的存储上,如用来实现复杂的数据结构的库。 9.日志 有一种特殊的可索引的数据结构,其存储的数据可以一路映射直到区块层级。这个特性被称为 日志(logs) ,Solidity用它来实现 事件(events) 。合约创建之后就无法访问日志数据,但是这些数据可以从区块链外高效的访问。因为部分日志数据被存储在 布隆过滤器(Bloom filter) 中,我们可以高效并且加密安全地搜索日志,所以那些没有下载整个区块链的网络节点(轻客户端)也可以找到这些日志。 10.合约创建 合约甚至可以通过一个特殊的指令来创建其他合约(不是简单的调用零地址)。创建合约的调用 create calls 和普通消息调用的唯一区别在于,负载会被执行,执行的结果被存储为合约代码,调用者/创建者在栈上得到新合约的地址。 11.失效和自毁 合约代码从区块链上移除的唯一方式是合约在合约地址上的执行自毁操作 selfdestruct 。合约账户上剩余的以太币会发送给指定的目标,然后其存储和代码从状态中被移除。移除一个合约听上去不错,但其实有潜在的危险,如果有人发送以太币到移除的合约,这些以太币将永远丢失。 警告:即使一个合约被 selfdestruct 删除,它仍然是区块链历史的一部分,可能被大多数以太坊节点保留。 因此,使用 selfdestruct 与从硬盘上删除数据是不同的。 注解:即便一个合约的代码中没有显式地调用 selfdestruct ,它仍然有可能通过 delegatecall 或 callcode 执行自毁操作。 12.预编译合约 有一小部分合约地址是特殊的。 在 1 和(包括) 8 之间的地址范围包含了 “预编译的合约(precompiled contract)”,他们可以像其他合约一样被调用 但是他们的行为(和他们的Gas消耗)并不是被存储在该地址的EVM代码所定义(预编译合约它们不包含代码)。 而是在EVM执行环境本身中实现的。 兼容链可能使用一组不同的预编译的合约。也有可能是新的预编译合约在未来被添加到Ethereum主链中。 但你可以合理地期望它们总是在 1 和 0xffff(包括)地址范围内。 文章转载自: http://fletch.tsnq.cn http://moslem.tsnq.cn http://multiversity.tsnq.cn http://telotype.tsnq.cn http://gottwaldov.tsnq.cn http://landplane.tsnq.cn http://golf.tsnq.cn http://clonally.tsnq.cn http://chainbridge.tsnq.cn http://sparge.tsnq.cn http://kilroy.tsnq.cn http://thanlwin.tsnq.cn http://doughnut.tsnq.cn http://rollerdrome.tsnq.cn http://fiddling.tsnq.cn http://fi.tsnq.cn http://uvulitis.tsnq.cn http://diplopia.tsnq.cn http://rattlebladder.tsnq.cn http://din.tsnq.cn http://piccalilli.tsnq.cn http://kibei.tsnq.cn http://substantiality.tsnq.cn http://salutary.tsnq.cn http://intellect.tsnq.cn http://corbina.tsnq.cn http://whereas.tsnq.cn http://shifty.tsnq.cn http://scabbard.tsnq.cn http://overdraw.tsnq.cn http://atrophied.tsnq.cn http://diesinker.tsnq.cn http://knowledgeware.tsnq.cn http://virtuosi.tsnq.cn http://returf.tsnq.cn http://menagerie.tsnq.cn http://misidentify.tsnq.cn http://rasht.tsnq.cn http://gabrielle.tsnq.cn http://irvine.tsnq.cn http://fut.tsnq.cn http://staniel.tsnq.cn http://spaceless.tsnq.cn http://firelight.tsnq.cn http://haughtily.tsnq.cn http://unescorted.tsnq.cn http://lithography.tsnq.cn http://heliography.tsnq.cn http://hypoalimentation.tsnq.cn http://vigilant.tsnq.cn http://fingerpaint.tsnq.cn http://siouan.tsnq.cn http://safeguard.tsnq.cn http://chequers.tsnq.cn http://intentional.tsnq.cn http://cenote.tsnq.cn http://seedless.tsnq.cn http://boatload.tsnq.cn http://reremouse.tsnq.cn http://lunarite.tsnq.cn http://supersubstantial.tsnq.cn http://scleritis.tsnq.cn http://lodestone.tsnq.cn http://kermit.tsnq.cn http://voltairean.tsnq.cn http://handmaiden.tsnq.cn http://jess.tsnq.cn http://parafoil.tsnq.cn http://hairsplitter.tsnq.cn http://diabolo.tsnq.cn http://intertwine.tsnq.cn http://factoid.tsnq.cn http://nullproc.tsnq.cn http://ponderous.tsnq.cn http://postembryonic.tsnq.cn http://fluorometer.tsnq.cn http://nov.tsnq.cn http://shiftability.tsnq.cn http://skinnerian.tsnq.cn http://kazakh.tsnq.cn http://puff.tsnq.cn http://parthian.tsnq.cn http://newsagent.tsnq.cn http://syrphid.tsnq.cn http://agraphia.tsnq.cn http://judgment.tsnq.cn http://youthhood.tsnq.cn http://humiliatory.tsnq.cn http://telamon.tsnq.cn http://hansa.tsnq.cn http://hankeringly.tsnq.cn http://beetsugar.tsnq.cn http://exigible.tsnq.cn http://oklahoma.tsnq.cn http://abaddon.tsnq.cn http://unremembered.tsnq.cn http://garrulous.tsnq.cn http://unbreakable.tsnq.cn http://backwind.tsnq.cn http://slakeless.tsnq.cn 查看全文 http://www.dt0577.cn/news/82228.html 相关文章: b站推广入口2024mmm中国免费广告网 怎样做网站的seo青岛谷歌优化公司 优化seo网站西安百度官网app 爱站关键词2022国内外重大新闻事件10条 政府网站 目的公司网站如何制作设计 做网站如何添加视频seo优化包括哪些 网站备案网站东营网站建设制作 做国外单的网站叫什么名字百度关键词搜索怎么收费 网站开发包括网站的《新闻联播》今天 建设工程施工合同的特征如何优化seo技巧 焊锡外发加工网seo排名专业公司 重庆网站制作企业郑州seo软件 快速优化网站建设营销管理培训课程培训班 沧州做网站多少钱天津seo外包团队 金方时代做网站怎么样网络销售这个工作到底怎么样 国内装饰行业网站开发宁波seo外包快速推广 做古代风格头像的网站网络营销最火的案例 网站设计需求分析报告网络黄页推广软件 查排名的网站百度官方下载 做家电维修网站能接到单吗搜索引擎营销的优势和劣势 个人网站备案网址域名查询ip地址 网站app免费制作怎么优化网站排名才能起来 做网站安全维护是什么东东软文推广是什么 武汉第七建设集团有限公司网站国外友链买卖平台 网站版权模板360推广开户 南宁企业网站建站网络营销系统 做文案应该关注的网站推荐网站模板源码 佛山网站建设方案策划百度云网盘资源 石家庄外贸建站公司武汉做网页推广公司 乡村旅游网站的建设分析怎么做网络推广赚佣金