墨客科普 I MOAC (墨客)基础知识问答

2019-09-16 18:04:40 51

本篇试图搜罗和解答有关墨客区块链的一般性知识,并根据研发进度持续更新。

1.墨客

问:墨客的有价通证叫什么?
答:墨客(moac)。

问:sha和moac有什么区别?
答:sha是一个计算单位,像美分到美元或便士到磅。 1 moac =10**18 sha。

问:墨客的平均出块时间是多少?
答:大约10秒。

问:墨客的平均块大小是多少?
答:大约2KB,实际值取决于具体情况。

问:墨客是否支持脚本?支持什么类型的脚本?
答:支持智能合约。

问:如何得到moac?
答:1.成为一名矿工;2.用其他货币换取;3.接受别人的赠送。

问:moac从哪里来的?
答:上线时首次创建了1.5亿个用于映射之前发行的通证;另外,在挖出新块时也会生成moac,每个区块新产生2个。

问:什么是节点?
答:一个节点本质上是一台连接到网络的计算机,它负责处理交易。

问:有几种墨客网络?
答:有三种类型的网络:实时网络(mainnet),测试网络(testnet)和私有网络。

问:这些网络的ID是什么?
答:mainnet(id = 99),testnet(id = 101),Private(自定义)。

问:如何得到测试网络moac?
答:1.成为一名矿工;2.免费领取,https://faucet.moacchina.com/;3.接受别人的赠送。

问:与墨客网络交互的方式有哪些?
答:可以使用电子钱包或DApp。

问:可以“隐藏”一个墨客交易吗?
答:不可以。所有交易对每个人都是可见的。

问:交易记录在哪里?
答:在公共账本上。

问:可以在testnet测试网络中挖一些墨客,然后转移到mainnet网络吗?
答:不可以。不能在不同的墨客网络之间传递moac。

问:为什么需要私有网络?
答:有很多原因,但主要是为了数据隐私、分布式数据库、权限控制和测试。

问:如何轻松查看有关交易和区块的详细信息?
答:使用区块链浏览器,如http://explorer.moac.io/home。

问:墨客使用什么共识模式?
答:工作量证明(POW)。子链采用权益证明(POS)、IPFS或自定义共识模块。

问:简单地解释下工作量证明。
答:它实际上是矿工为了证明自己的工作量并验证交易而对一个计算密集型问题的求解。

问:简单地解释下权益证明。
答:区块的创建者是根据节点所持有的财富和股权随机选择的。它不是计算密集型的。

问:用什么来对交易进行签名?
答:用户的私钥。

问:丢失私钥后还能恢复墨客账户吗?
答:可以,可以使用助记词组。

2.墨客节点软件

问:有哪些方法可以连接到一个墨客节点?
答:IPC-RPC和JSON-RPC。

问:到哪里下载墨客节点软件?
答:https://github.com/MOACChain/moac-core/releases。

问:墨客节点对硬件配置有特殊要求吗?
答:没有,普通服务器即可。推荐cpu 8核,内存16G,硬盘1T。

问:墨客节点软件支持32位主机吗?
答:支持。比如解压nuwa1.0.6.win.zip后,moac-windows-4.0-386.exe支持32位的windows,而 moac-windows-4.0-amd64.exe支持64位的windows。

问:节点有哪些API?
答:db、mc、chain3、net、personal、vnode、SCS、debug、txpool。

问:如果启动节点时使用了--rpc选项,哪些RPC会被启用?
答:JSON-RPC。

问:哪些RPC API是默认启用的?
答:mc、chain3和net。

问:如何为JSON RPC启用Admin API?
答:使用--rpcapi选项。

问:选项--datadir有什么作用?
答:它指定了区块链的存储位置。

问:什么是节点的“快速”同步,为什么它更快?
答:快速同步会将事务处理回执与区块一起下载并完整提取最新的状态数据库,而不是重新执行所有发生过的交易。

问:节点启动时,选项--testnet是做什么的?
答:它将客户端连接到testnet网络。

问:启动客户端会在屏幕上输出大量文字,应该如何减少输出信息?
答:可以将--verbosity设置为较低的数字(默认值为3,数字越大,输出信息越多)。

问:如何将自定义javascript文件加载到控制台中?
答:使用loadScript([目录]\[文件名].js)。

问:本地节点客户端的帐户存储在哪里?
答:在keystore目录中。

问:为了进行交易,需要对账户进行什么操作?
答:必须先解锁该账户,可以传入账户地址或账户序号来解锁。其中包含账户密码。

问:什么因素决定账户的序号?
答:添加帐户的先后顺序。

问:是否可以使用节点进行挖矿?
答:可以,使用miner.start()开启,使用mc.mining查看,使用miner.stop()停止。

问:什么是“coinbase”?
答:这是接收挖矿奖励的帐户,它是序号为0的帐户。

问:墨客是否有官方公共节点?
答:有,https://gateway.moac.io/。

问:怎么使用墨客公共节点?
答:https://blog.csdn.net/lyq13573221675/article/details/83582762。

3.交易和智能合约

问:什么是智能合约?
答:这是用多种语言编写的计算机代码。智能合约存在于墨客网络上,它们根据预定规则执行动作,规则是由参与者在这些合约中商定的。

问:智能合约可以使用哪些语言编写?
答:最常用的语言是Solidity。

问:能举出一个智能合约的用例吗?
答:卖方-买方应用场景:买方在智能合约中存入款项,卖方看到存款并发送货物,买方收到货物并放行付款。

问:什么是moacmask?
答:一款类Metamask的工具,可以帮助用户在浏览器中与墨客网络进行交互。

问:moacmask不支持什么?
答:挖矿和合约部署。

问:执行合约是否免费?
答:不,调用合约方法是一个交易,因此需要支付费用。

问:访问智能合约的状态是否免费?
答:是的,查询状态不是交易。

问:谁执行合约?
答:矿工。

问:为什么调用智能合约的方法需要付费?
答:有些方法不会修改合约的状态,也没有其他逻辑,只是返回一个值,这样的方法是可以免费调用的。调用那些改变合约状态的方法则需要付费,因为它们需要gas来执行。

问:为什么需要gas?
答:由于矿工在他们的机器上执行合约代码,他们需要gas来覆盖执行合约代码的成本。

问:是不是gas的价格决定了交易什么时候被处理?
答:既是,也不是。gas价格越高,交易成功的可能性就越大。尽管如此,gas价格并不能保证更快的交易处理。

问:交易中的gas使用量取决于什么?
答:这取决于合约所用的存储量、指令(操作码)的类型和数量。每个EVM操作码都对应一个固定的gas用量。

问:交易费是如何计算的?
答:gas用量*gas价格(由调用方指定gas价格)。

问:如果智能合约的执行成本低于调用方指定的gas用量,用户是否得到退款?
答:是的。

问:如果智能合约的执行成本高于指定的gas用量,会发生什么情况?
答:用户不会得到退款,并且一旦所有的gas用完,执行就会停止,合约也不会改变。

问:谁支付智能合约的调用费用?
答:调用合约的用户。

问:节点在什么上面运行智能合约代码?
答:墨客虚拟机。遵循EVM规范,EVM是节点上的一个进程。

问:为了运行智能合同,EVM需要什么?
答:它需要合约的字节码,可以通过编译Solidity等更高级别的语言编写的合约来生成字节码。

问:粗略的说,EVM有哪些组成部分?
答:内存区域、堆栈和执行引擎。

问:什么是Remix?
答:开发,测试和部署合约的在线工具。 适合快速构建和测试轻量级合约,但不适合更复杂的合约。

问:在墨客上面怎么部署智能合约?
答:推荐使用http://wallet.moac.io/。部署过程简单且方便管理已经部署的合约。

问:如何检查txpool?
答:使用命令txpool.inspect或者txpool.content。

问:Solidity是静态类型的还是动态类型的语言?
答:它是静态类型语言,这意味着类型在编译时是已知的。

问:什么是合约实例?
答:合约实例是区块链上已部署的合约。

问:请说出Java和Solidity之间的一些区别。
答:Solidity支持多重继承,但不支持重载。

问:你必须在Solidity文件中指定的第一件事是什么?
答:Solidity编译器的版本,比如指定为^ 0.4.16。这是必要的,因为这样可以防止在使用其他版本的编译器时引入不兼容性错误。

问:合约中包含什么?
答:主要由存储变量、函数和事件组成。

问:合约中有哪些类型的函数?
答:有构造函数、fallback函数、修改合约状态的函数和只读的constant函数。

问:如果将多个合约定义放入单个Solidity文件中,我会得到什么错误?
答:将多个合约定义放入单个Solidity文件是完全正确的。

问:两个合约之间交互的方式有哪些?
答:一个合约可以调用另一个合约,也可以继承其他合约。

问:如果有一个大项目,需要将所有相关的合约保存到一个文件中吗?
答:不需要。可以使用import语句导入其他合约文件,例如import "./MyOtherContracts.sol";。

问:只能导入本地合约文件吗?
答:还可以使用HTTP协议导入其他合约文件,例如从Github导入:import "http://github.com/path_to_file";。

问:EVM的内存分成了哪些部分?
答:它分为Storage、Memory和Calldata。

问:请解释一下Storage。
答:可以把它想象成一个数据库。 每个合约管理自己的Storage变量。它是一个键-值数据库(256位键值)。就每次执行使用的gas而言,在Storage上读取和写入的成本更高。

问:请解释一下Memory。
答:这是一个临时存储区。一旦执行结束,数据就会丢失。可以在Memory上分配像数组和结构这样复杂的数据类型。

问:请解释一下Calldata 。
答:可以把calldata视为一个调用堆栈。它是临时的、不可修改的,用来存储EVM的执行数据。

问:哪些变量存储在Storage,那些变量存储在Memory?
答:状态变量和局部变量(它们是对状态变量的引用)存储在Storage区域, 函数参数位于Memory区域。

问:资产可以自由转出吗?
答:如果你拥有私钥,就可以。

问:资产可以全部转出吗?
答:如果是合约类资产,比如ERC20和ERC721,可以的;如果的moac资产,因为它同时也充当gas费,总会有些余额在你的账号里,只不过这个余额足够小,可以忽略。

4.Chain3和DApp

问:什么是DApp,它与App有什么不同?有什么不同?
答:App通常包含一个客户端,这个客户端会与一些中心化的资源(由一个组织拥有)进行通信,通常客户端通过一个中间层连接到中心化的数据层,如果中心化的数据层中的信息丢失,不能很轻松地恢复。DApp表示去中心化应用程序,它与区块链网络进行交互。DApp使用的数据驻留在合约实例中。中心化数据可能比去中心化数据更容易受到破坏。

问:DApp的前端是否局限于某些技术或框架?
答:不受限制。可以使用任何技术来开发DApp的前端,比如HTML,CSS,JS,Java,Python...

问:前端用什么库连接后端(区块链)?
答:chain3库。

问:官方提供那些版本的chain3库?
答:chain3.js,chain3.java,chain3.go,chain3.swift。

问:在DApp的前端需要哪些东西才能与指定的智能合约进行交互?
答:合约的ABI和字节码。

问:ABI有什么作用?
答:ABI是合约的公开接口描述对象,被DApps用于调用合约的接口。

问:字节码有什么作用?
答:EVM只能执行合约的字节码。

问:为什么要使用BigNumber库?
答:因为Javascript不能正确处理大数。

问:.call和.send有什么区别?
答:.send发送交易并支付费用,而.call查询合约状态。

问:调用.send()时需要指定什么?
答:必须指定from字段,即发送账户地址。其他都是可选的。

问:chain3.mc.sendTransaction()的唯一功能是将moac发送到特定的地址,这个说法是否正确?
答:不对,也可以用它调用合约方法。

问:你是否知道墨客的可扩展性解决方案?
答:采用分层结构、分片技术实现的墨客子链已经上线并支持多个DApp在运行。

5.应用链

问:墨客应用链功能已经上线了吗?
答:是的,已经上线并支持多个DApp在运行。

问:墨客应用链节点叫什么?
答:smart contract server,简称SCS。应用链节点scs可以称作子链矿工,负责应用链的出块,是维持应用链稳定安全运行的根本。

问:墨客应用链可以单独存在吗?
答:不能,墨客应用链依赖主链存在。

问:墨客应用链节点怎么接入区块链?
答:应用链节点需要注册到vnode,从而接入区块链。

问:应用链节点怎么安装部署?
答:官方节点文件包含SCS代码,在云上主机或SCS硬件盒子跑起来就可以。

问:SCS不能断电吗?
答:最好不要断电断网,如果SCS不参与应用链的出块和投票,可能会被踢出应用链。

问:SCS能选择参与哪个应用链不参与哪个应用链吗?
答:加入了SCS池子,SCS自己就没有主动权了,能不能被选中为应用链服务,完全靠算法(运气)。

问:SCS为什么要交押金?
答:SCS为应用链服务需要交押金,主要是防止作恶,在被踢出应用链时押金会被扣除。

问:有的应用链发放的收益太少,实在不想参加?
答:SCS可以定义提供服务的最小值,如果DApp方提供的收益少于这个最小值,你就不会被选中。

问:搭建一条应用链很复杂吗?
答:完全理解部署过程有那么点复杂,不过官方已经提供一键发链功能,以后拥有自己的区块链就简单了。

问:SCS之间是互相通信同步区块的吗?
答:同一应用链的SCS之间是不直接通信的,他们通过底层vnode进行通信。

问:一个SCS可以参与多条应用链吗?
答:可以,需要提交更多押金。

问:应用链使用什么共识机制?
答:目前支持POS和IPFS,后期会支持更多,并模块化。

问:一条应用链需要多少SCS?
答:这个可以调节,推荐数量20~100。

问:monitor是什么,主要作用是什么?
答:monitor是一种特殊的应用链SCS节点,主要用于监控应用链的状态和数据。monitor不参与应用链的交易共识,只是同步区块数据,提供数据查询。

问:应用链交易真的不收gas费吗?
答:是的,矿工费用由DApp方支出。

问:DApp方需要为一条应用链支付多少moac?
答:每天在5 moac左右。

问:Dapp怎么使用应用链?
答:在应用链部署业务逻辑合约。

问:每条应用链能部署几个智能合约?
答:多个。

问:应用链flush起什么作用?
答:应用链需要每隔一段时间发起flush操作,将关键状态写入基础链进行背书。除此之外,flush还将完成节点收益分配和有币区块链的充提操作。

问:应用链可以停止吗?
答:部署应用链方可以调用应用链控制合约的close方法关闭这条应用链。此时会进入清算状态,待所有应用链收益结清后,即关闭应用链。

问:应用链能实现跨链功能吗?
答:应用链之间、应用链与基础链之间可以跨链,与其他区块链之间尚不能跨链。

问:可以在应用链部署erc20合约,然后上交易所吗?
答:不建议这么做,可以在母链部署erc20合约,到应用链交易。既好上交易所,又省了矿工费。

问:应用链矿工池是什么?
答:存储应用链矿工的池子,本质上池子是一个智能合约,需要应用链节点注册。

问:vnode代理池是什么?
答:存储vnode代理节点,本质上池子是一个智能合约,需要vnode节点。

问:什么是应用链控制合约?
答:用于控制整个应用链的流程。

问:什么是minitor SCS?
答:监听节点是一个特殊的SCS节点,可以用来监听某条应用链的运行情况,当一个节点成为监听节点后,其只负责同步该应用链的区块信息,不参与应用链出块。Dapp用户可以通过该节点监控应用链运行情况。

问:flush?
答:应用链的一个特殊操作,每条正常运行的应用链每隔一段时间需要向母链进行状态刷新,并且同时完成:SCS矿工的收益发放;有币应用链和基础链之间的货币充提等操作。flush周期可在部署应用链控制合约时设置,当应用链交易数不活跃时,flush周期将变大,直到有交易时收敛到设置值。

6.社区

问:墨客社区由谁负责?
答:墨客基金会。

问:墨客社区主要提供哪些服务?
答:1.组织线下和线上社区交流活动;2.维护官网、微信公众号、微信社群、qq社群,全方位发布墨客相关信息;3.组织墨客技术培训和开发者大赛。

问:如果我在开发中碰到技术问题,怎么联系你们?
答:如果你加入了社区,或者关注了微信公众号,通常很容易就能找到墨客技术工程师 。

问:墨客社区有专门的技术社群吗?
答:有的,墨客开发者社区。http://developer.moacchina.net。

问:开发者社区的愿景是什么?
答:1.培养区块链开发人才;2.参与商业项目的实施 。

问:开发者社区是官方的吗?
答:社群自治组织,基金会提供支持。

问:开发者社区能做什么?
答:1.如果你有区块链应用的点子,可以去开发者社区提交想法,获得墨客奖励;2.如果你是码农,想开发自己的区块链应用,可以申请基金会资助;3.想做贡献,可以领取或参与项目并获取奖励;4.发布自己的需求,并悬赏;5.足够自信,可以参与商业项目。


(转自墨客区块链)

电话咨询
社区服务
产品展示