Amodule Network基于DAG协议解决了数据块臃肿,可视化操作系统、模块化智能合约,为可扩展性提供了有效途径,同时也更易操作,为更多企业甚至个人用户提供快速链改可能。Amodule Network将智能合约的接口进行了集中简化,大大缩短了业务模型设计到实际信息数据上链间的开发周期,降低了开发人员的技术门槛,能够建立和发布各种基于内容相关业务的DAPP,重新定义了应用基础链的标准。
AMO的区块链技术分为四层,存储层,网络层,扩展层和应用层。
存储层用来存储区块链的相关数据,主要运用了leveldb和mongodb两种数据库,通过将leveldb的快读写速度和mongodb成熟稳定的特点相结合,最大限度的优化了存储层代码的运行效率,降低了维护难度,减少了开发成本并且保证了存储层的稳定性。
网络层主要包括了两部分,共识机制和点对点通讯协议。
点对点通讯协议采用了当前区块链最流行的devp2p, devp2p节点间的通信通过TCP来实现。节点可以在任意的端口上自由的发送和接受消息。 Devp2p经过以太坊的长期测试,可以确保网络层面通讯的效率及稳定性。
AMO共识机制采用了PBFT(拜占庭容错算法)。PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。
扩展层主要为智能合约层。智能合约运行在AMO独有的虚拟机上,用沙盒封装起来,并且被完全隔离,也就是说运行在AMO虚拟机内部的代码不能接触到网络、本地的文件系统或者其它本地的进程。AMO虚拟机拟基于JSVM进行扩展开发,支持ECMAScript 5标准,重新定义可以执行的JS代码及可以调用的JS库函数,可通过堆栈结构机器来进行实做。用户通过自己编写新的智能合约,可以自由的发布侧链或者实现各种区块链相关的功能。
应用层为基于电脑或者手机的可以与用户交互的DAPP或者APP。DAPP和APP更高于智能合约层,可架在其之上。企业或用户可通过智能合约进行更高层次的开发。企业或用户也可通过开放的API对系统进行访问。使得企业或用户可以自由的开发,将自己的产品模块化。
部分代码展示:
相关接口信息
P2P协议列表
AMODEVP2P.AMO.MESSAGE_CODES.STATUS
AMODEVP2P.AMO.MESSAGE_CODES.NEW_BLOCK_HASHES
AMODEVP2P.AMO.MESSAGE_CODES.GET_BLOCK_HEADERS
AMODEVP2P.AMO.MESSAGE_CODES.BLOCK_HEADERS
AMODEVP2P.AMO.MESSAGE_CODES.GET_BLOCK_BODIES
AMODEVP2P.AMO.MESSAGE_CODES.BLOCK_BODIES
AMODEVP2P.AMO.MESSAGE_CODES.NEW_BLOCK
AMODEVP2P.AMO.MESSAGE_CODES.TX
AMODEVP2P.AMO.MESSAGE_CODES.GET_NODE_DATA
AMODEVP2P.AMO.MESSAGE_CODES.NODE_DATA
AMODEVP2P.AMO.MESSAGE_CODES.GET_RECEIPTS
AMODEVP2P.AMO.MESSAGE_CODES.RECEIPTS
AMODEVP2P.AMO.MESSAGE_CODES.NODES_IP_SYNC
API接口列表
AMO.version.api js的api版本
AMO.version.node 客户端或节点的版本信息
AMO.version.network 网络协议版本
AMO.isConnected 检查到节点的连接是否存在
AMO.setProvider 设置Provider
AMO.currentProvider 检查是否已经设置过Provider,避免重复设置
AMO.reset 用来重置AMO的状态
AMO.sha3 使用Keccak-256 SHA3算法哈希过的结果
AMO.toHex 需要转化为HEX的值
AMO.toAscii 转换ASCII码字符串
AMO.fromAscii 将任何的ASCII码字符串转为HEX字符串
AMO.toDecimal 转为一个十进制的数字
AMO.fromDecimal 将一个数字,或者字符串形式的数字
AMO.fromAMO 以AMO为单位的数量进行货币转换
AMO.toAMO 按对应货币转为以AMO为单位
AMO.toBigNumber 转为BigNumber
AMO.net.listening 判断是否正在监听网络连接
AMO.net.peerCount 连接节点连上的其它以太坊节点的数量
AMO.defaultAccount 默认的账户地址
AMO.defaultBlock 恢复默认区块设置
AMO.syncing 同步区块
AMO.isSyncing 提供同步开始,更新,停止的回调函数方法
AMO.coinbase 挖矿奖励地址
AMO.mining 验证该节点是否配置挖矿
AMO.hashrate 表示的是当前的每秒的哈希难度
AMO.gasPrice 返回当前的gas价格
AMO.accounts 返回当前节点持有的帐户列表
AMO.blockNumber 返回当前区块号
AMO.register 注册给定地址
AMO.unRegister 取消注册给定地址
AMO.getBalance 获得在指定区块时给定地址的余额
AMO.getStorageAt 获得某个地址指定位置的存储的状态值
AMO.getCode 获取指定地址的代码
AMO.getBlock 返回块号或区块哈希值所对应的区块
AMO.getBlockTransactionCount 返回指定区块的交易数量
AMO.getUncle 返回指定叔块
AMO.getTransaction 返回匹配指定交易哈希值的交易
AMO.getTransactionFromBlock 返回指定区块的指定序号的交易
AMO.getTransactionReceipt 通过交易哈希返回交易的收据
AMO.getTransactionCount 返回指定地址发起的交易数
AMO.sendTransaction 发送一个交易到网络
AMO.sendRawTransaction 发送一个已经签名的交易
AMO.sign 签名后的数据
AMO.call 函数调用返回的值
AMO.estimateGas 根据交易或事件返回使用的Gas
AMO.filter 事件监听器的返回结果
AMO.contract 创建一个合约对象用来在某个地址上初始化合约
AMO.getCompilers 返回可用的编译器
AMO.compile.solidity 编译Solidity源代码
AMO.compile.lll 编译LLL源代码
AMO.compile.serpent 编译serpent源代码
AMO.namereg 返回一个global的对象
AMO.db.putString 以一个本地数据库的级别存储一个字符串时使用
AMO.db.getString 本地的数据库中返回一个字符串
AMO.db.putHex 在本地的数据库中存储二进制数据
AMO.db.getHex返回本地的leveldb中的二进制数据
AMO.generateWalletKeys 自动生成私钥,公钥和地址
AMO.getTransactions 获取交易
AMO.signedTransaction 签名交易
AMO.getKeysFromPrivate通过私钥生成地址
AMO.getChainHeight 获取区块高度
AMO.getBlockByHeight获取某一个高度下所有交易
AMO.getTransactions通过钱包地址获取交易详情
AMO.getWalletKeys 获取钱包信息
AMO.getTokenChainSize 获取Token链信息
AMO.getNodeInfo 获取节点信息
AMO.setPOW 设置POW状态
AMO.startNetworkEvent 设置Network事件类型
AMO.getBlockByHash 通过Hash获取区块
AMO.getWholeTokenBlockchain获取整个Token链
AMO.setAddress 设置账户地址
Amodule Network是一个商业级分布式智能合约模块网络,打造一个商业级分布式智能合约模块网络,具备高速交易、模块化智能合约和无限可扩展性等特性,解决现存区块链技术的可拓展性和技术门槛相对较高的问题,重新定义应用基础链的标准。
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。