精华内容
下载资源
问答
  • Web3 – The Decentralized Web

    万次阅读 2019-05-08 10:06:53
    Web3 – The Decentralized Web In the early 1990’s the WWW revolutionized information. 10 years later, the Internet became more mature &programmable. We saw the rise of the so-called Web2, which ...

    Web3 – The Decentralized Web

    In the early 1990’s the WWW revolutionized information. 10 years later, the Internet became more mature & programmable. We saw the rise of the so-called Web2, which brought us social media and e-commerce platforms. It revolutionized social interactions, bringing producers and consumers of information, goods and services closer together, and allowed us to enjoy P2P interactions on a global scale. But always with a middleman: a platform acting as a trusted intermediary between A and B who did not know or trust each other. While these platforms have done an amazing job at creating a P2P economy, with an ever more sophisticated content discovery layer, they also dictate all rules of the transactions, and these platforms own all of our data.

    In this context, Blockchain seems to be a driving force of the next generation Internet, the Decentralized Web, or Web3. Blockchain can bring us true P2P transactions without a middleman, and Bitcoin is the first use case. While Bitcoin is P2P money without banks and bank managers, the same technology that brought us Bitcoin could now allow us to build ride sharing without Uber, apartment sharing without Airbnb, and social media without Facebook and Twitter.

     

    Killing the Server: Redesigning Data Structures

    We first had the computer, and then we started connecting computers over the internet protocol. In the early days of personal computers, we used to save data on a floppy disc, eject it, walk over to the colleague that needed the file, insert the floppy disc into that person’s computer, and copy the file onto their computer so they could use it. Data was centrally stored one physical device, in order to transfer data, copies needed to be made. The internet made the transfer of these copies faster and massively reduced transaction costs.

    web3

     

    30 years into mass adoption of the internet, our data architectures are mostly still client-server based. Which means that our data is centrally stored on one computer, and retrieved via the Internet by another computer over the Internet. Even though we live in an ever more connected world, where every device whether toaster or fridge are also connected to the internet, data is still centrally stored: on our devices, on the USB stick or even in the cloud. Which raises issues of trust: Can I trust those people and institutions that store my data against any form of corruption: internal or external, man-made or machine failure, on purpose or by accident? Such centralized data structures have a unique point of failure points of failure. It’s as if we never invented the Internet.

    web3

    Web3 . Centralized vs Decentralized

     

    From Data Monarchy to Data Democracy

    P2P data architectures have existed since the 1990’s where they rose to fame with file sharing programs like BitTorrent and Tor browser. In combination with cryptography and game theoretic incentive mechanisms, Blockchain has taken P2P architectures to a new level. We can now start to move from centralized data structures where all data is stored on a central computer to more decentralized or fully distributed data architectures.

    web3

    In the Web3, we are redefining data structure, given that we live in a connected world. It is important to note that Blockchain is only one of many technologies in this Decentralized Web Stack. While Blockchain is a great P2P way to record who did what and when, it is not ideal for storing large amounts of data, for two reasons: (1) scalability: blockchains are too slow, and (2) doesn’t allow privacy by design: never store private data on the Blockchain.

     

    Web3 Technology Stack

    Similar to building a normal web or mobile applications, creating a dApp commonly requires a few things: computation, file storage, external data, monetization, and payments. The community has made a lot of progress building the ecosystem in the past 4 years. While it was borderline impossible to build a dApp in 2014, in 2017 it’s feasible to build a basic dApp that requires minimal computation and file storage. The Web3 ecosystem has come a long way to develop a technology stack that devs can build upon. Here a listing of a few selected graphics:

     

    General Web3 Stack

    General Web3 Stack

     

    The transition from client-server internet to the decentralized web will be gradual rather than radical. As the decentralized web stack is still maturing, the transition seems to be shifting from centralized to partially decentralized to fully decentralized. Furthermore, it is important to point out that while decentralized architectures are more fault tolerant and attack resistant, they are also slower. While it is likely that the future of the internet will be more decentralized, this does not mean that we will get rid of centralized systems altogether. Centralized systems also have advantages and will likely prevail, but only for specific use cases.

    BigchainDB

    Source: BigchainDB

     

    Further Reading

    展开全文
  • 以太坊:主对象 web3

    万次阅读 2019-05-09 09:14:39
    web3 web3对象提供了所有方法 示例 var Web3 = require('web3'); // create an instance of web3 using the HTTP provider. // NOTE in mist web3 is already available, so check first if it's available ...

    web3

    web3 对象提供了所有方法

    示例

    var Web3 = require('web3');
    // create an instance of web3 using the HTTP provider.
    // NOTE in mist web3 is already available, so check first if it's available before instantiating
    var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
    

    示例 using HTTP Basic Authentication

    var Web3 = require('web3');
    var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545", 0, BasicAuthUsername, BasicAuthPassword));
    //Note: HttpProvider takes 4 arguments (host, timeout, user, password)
    

    web3.version

    web3.version.api

    web3.version.api
    

    返回值

    String - 以太坊js的api版本.

    示例

    var version = web3.version.api;
    console.log(version); // "0.2.0"
    

    web3.version.node

    web3.version.node
    // or async
    web3.version.getNode(callback(error, result){ ... })
    

    返回值

    String - 客户端或节点的版本信息.

    示例

    var version = web3.version.node;
    console.log(version); // "Mist/v0.9.3/darwin/go1.4.1"
    

    web3.version.network

    web3.version.network
    // or async
    web3.version.getNetwork(callback(error, result){ ... })
    

    返回值

    String - 网络协议版本.

    示例

    var version = web3.version.network;
    console.log(version); // 54
    

    web3.version.ethereum

    web3.version.ethereum
    // or async
    web3.version.getEthereum(callback(error, result){ ... })
    

    返回值

    String - 以太坊的协议版本.

    示例

    var version = web3.version.ethereum;
    console.log(version); // 60
    

    web3.version.whisper

    web3.version.whisper
    // or async
    web3.version.getWhisper(callback(error, result){ ... })
    

    返回值

    String - Twhisper协议的版本.

    示例

    var version = web3.version.whisper;
    console.log(version); // 20
    

    web3.isConnected

    web3.isConnected()
    

    检查是否与节点连接上

    参数

    返回值

    Boolean:true表示已连接

    示例

    if(!web3.isConnected()) {
    
       // show some dialog to ask the user to start a node
    
    } else {
    
       // start web3 filters, calls, etc
    
    }
    

    web3.setProvider

    web3.setProvider(provider)
    

    设置网络通信服务提供对象.

    参数

    none

    返回值

    undefined:通信服务提供对象

    示例

    web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545')); // 8080 for cpp/AZ, 8545 for go/mist
    

    web3.currentProvider

    web3.currentProvider
    

    如果已经设置了Provider,则返回当前的Provider。这个方法可以用来检查在使用mist浏览器等情况下已经设置过Provider,避免重复设置的情况.

    返回值

    Object - null 或 已经设置的Provider对象;

    示例

    // Check if mist etc. already set a provider
    if(!web3.currentProvider)
        web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
    

    web3.reset

    web3.reset(keepIsSyncing)
    

    用来重置web3的状态。重置除了manager以外的其它所有东西。卸载filter,停止状态轮询

    参数

    1. flag``Boolean - 如果设置为true,将会卸载所有的filter,但会保留web3.eth.isSyncing()的状态轮询

    返回值

    undefined

    示例

    web3.reset();
    

    web3.sha3

    使用keccak-256哈希算法,计算给定字符串的哈希值

    web3.sha3(string [, options])
    

    参数

    1. String - 传入的需要使用Keccak-256 SHA3算法进行哈希运算的字符串.

    2. Object - 可选项设置。如果要解析的是hex格式的十六进制字符串。需要设置encoding为hex。因为JS中会默认忽略0x.

    返回值

    String - 使用Keccak-256 SHA3算法哈希过的结果.

    示例

    var hash = web3.sha3("Some string to be hashed");
    console.log(hash); // "0xed973b234cf2238052c9ac87072c71bcf33abc1bbd721018e0cca448ef79b379"
    
    var hashOfHash = web3.sha3(hash, {encoding: 'hex'});
    console.log(hashOfHash); // "0x85dd39c91a64167ba20732b228251e67caed1462d4bcf036af88dc6856d0fdcc"
    

    web3.toHex

    web3.toHex(mixed);
    

    Converts any value into HEX.

    参数

    1. val``String|Number|Object|Array|BigNumber - 需要转化为HEX的值。如果是一个对象或数组类型,将会先用JSON.stringify1进行转换成字符串。 如果传入的是BigNumber2,则将得到对应的Number的HEX.

    返回值

    String - The hex string of mixed.

    示例

    var str = web3.toHex({test: 'test'});
    console.log(str); // '0x7b2274657374223a2274657374227d'
    

    web3.toAscii

    将HEX字符串转为ASCII3字符串

    web3.toAscii(hexString);
    

    参数

    1.hexString String - 十六进制字符串.

    返回值

    String - 给定十六进制字符串对应的ASCII码值.

    示例

    var str = web3.toAscii("0x657468657265756d000000000000000000000000000000000000000000000000");
    console.log(str); // "ethereum"
    

    web3.fromAscii

    web3.fromAscii(string [, padding]);
    

    将任何的ASCII码字符串转为HEX字符串.

    参数

    1. textString``String -ASCII码字符串.

    2. padding``Number - 返回的字符串字节大小,不够长会自动填充.

    返回值

    String - 转换后的HEX字符串.

    示例

    var str = web3.fromAscii('ethereum');
    console.log(str); // "0x657468657265756d"
    
    var str2 = web3.fromAscii('ethereum', 32);
    console.log(str2); // "0x657468657265756d000000000000000000000000000000000000000000000000"
    

    web3.toDecimal

    web3.toDecimal(hexString);
    

    将一个十六进制转为一个十进制的数字.

    参数

    1. hexString``String - 十六进制字符.

    返回值

    Number - 传入字符串所代表的十六进制值.

    示例

    var number = web3.toDecimal('0x15');
    console.log(number); // 21
    

    web3.fromDecimal

    web3.fromDecimal(number);
    

    将一个数字,或者字符串形式的数字转为一个十六进制串.

    参数

    1. Number|String - 数字.

    返回值

    String - 给定数字对应的十六进制表示.

    示例

    var value = web3.fromDecimal('21');
    console.log(value); // "0x15"
    

    web3.fromWei

    web3.fromWei(number, unit)
    

    以太坊货币单位之间的转换。将以wei为单位的资金,转换为指定单位的数值:

    • Gwei

    • Kwei

    • Mwei/babbage/ether/femtoether

    • ether

    • finney/gether/grand/gwei

    • kether/kwei/lovelace/mether/micro

    • microether/milli/milliether

    • mwei/nano/nanoether

    • noether

    • picoether/shannon

    • szabo

    • tether

    • wei

    参数

    1. number``Number|String|BigNumber - 数字或BigNumber.

    2. unitString` - 单位字符串.

    返回值

    String|BigNumber - Either a number string, or a BigNumber instance, depending on the given number parameter.

    示例

    var value = web3.fromWei('21000000000000', 'finney');
    console.log(value); // "0.021"
    

    web3.toWei

    web3.toWei(number, unit)
    

    将给定资金转换为以wei为单位的数值:

    • kwei/ada

    • mwei/babbage

    • gwei/shannon

    • szabo

    • finney

    • ether

    • kether/grand/einstein

    • mether

    • gether

    • tether

    参数

    1. Number|String|BigNumber - 数字或BigNumber.

    2. String - 字符串单位.

    返回值

    String|BigNumber - 根据传入参数的不同,分别是字符串形式的字符串,或者是BigNumber.

    示例

    var value = web3.toWei('1', 'ether');
    console.log(value); // "1000000000000000000"
    

    web3.toBigNumber

    web3.toBigNumber(numberOrHexString);
    

    Converts a given number into a BigNumber instance.

    See the note on BigNumber.

    参数

    1. Number|String - 数字或十六进制格式的数字.

    返回值

    BigNumber - BigNumber的实例.

    示例

    var value = web3.toBigNumber('200000000000000000000001');
    console.log(value); // instanceOf BigNumber
    console.log(value.toNumber()); // 2.0000000000000002e+23
    console.log(value.toString(10)); // '200000000000000000000001'
    

    web3.isAddress

    web3.isAddress(HexString);
    

    检查给定的字符串是否是有效的以太坊地址.

    参数

    1. String - 16进制字符串.

    返回值

    Boolean - 无效的地址返回false。对于全小写或全大写的有效地址字符串返回true。对于大小写混合的字符串, 该函数使用 web3.isChecksumAddress()进行检查.

    示例

    var isAddress = web3.isAddress("0x8888f1f195afa192cfee860698584c030f4c9db1");
    console.log(isAddress); // true
    展开全文
  • web3j开发API中文手册

    千次阅读 2018-06-22 16:52:41
    以太坊开发必备java包web3j的API中文手册。希望快速学习的话请访问web3j教程。 按子项目查看文档: abi 链接:http://cw.hubwiz.com/misc/web3j-3.4.0-cn/abi/ codegen 链接:...
    展开全文
  • web3.eth.sendTransaction

    万次阅读 2018-04-25 13:33:56
    如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的...如果交易是一个合约创建的,请使用web3.eth.getTransactionReceipt()在交易完成后获取合约的地址。 调用: web3.eth.sendTransaction(trans...

    如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程:

    发送一个交易到网络。如果交易是一个合约创建的,请使用web3.eth.getTransactionReceipt()在交易完成后获取合约的地址。

    调用:

    web3.eth.sendTransaction(transactionObject [, callback])

    参数:

    • transactionObject : Object - 要发送的交易对象。
      • from: String - 指定的发送者的地址。如果不指定,使用web3.eth.defaultAccount。
      • to: String - (可选)交易消息的目标地址,如果是合约创建,则不填.
      • value: Number|String|BigNumber - (可选)交易携带的货币量,以wei为单位。如果合约创建交易,则为初始的基金。
      • gas: Number|String|BigNumber - (可选)默认是自动,交易可使用的gas,未使用的gas会退回。
      • gasPrice: Number|String|BigNumber - (可选)默认是自动确定,交易的gas价格,默认是网络gas价格的平均值 。
      • data: String - (可选)或者包含相关数据的字节字符串,如果是合约创建,则是初始化要用到的代码。
      • nonce: Number - (可选)整数,使用此值,可以允许你覆盖你自己的相同nonce的,正在pending中的交易11。
      • Function - 回调函数,用于支持异步的方式执行7。

    返回值:

    • String - 32字节的交易哈希串。用16进制表示。

    示例:

    // compiled solidity source code using https://chriseth.github.io/cpp-ethereum/
    var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b6007600435028060005260206000f3";
    
    web3.eth.sendTransaction({data: code}, function(err, address) {
      if (!err)
        console.log(address); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385"
    });
    展开全文
  • 以太坊:Web3.js 0.20 使用说明

    万次阅读 2019-05-09 09:14:13
    web3简介 注意 web3.js 有两个不兼容的版本:0.20.x及1.0beta,1.0对0.20版本做了重构。 本文档是web3.js 0.20.x版本翻译,其对应的官方文档地址在JavaScript-API。 如果你使用的是 web3.js 1.0版本,其对应的官方...
  • web3的provider的正确使用

    千次阅读 2018-09-14 23:35:50
    我们在进行测试的时候,...const web3 = new Web3(ganache.provider()); 我们进行合约部署的时候,可以使用infura提供的provider let provider = new HDWalletProvider(mnemonic, "https://rinkeby.infura.i...
  • ETH 基础篇 JAVA Web3j 智能合约

    万次阅读 2018-01-30 14:30:40
    架构springboot  这里使用web3j当前eth官方推荐的集成jdk来做说明!当然你也可以使用它最底层的rpc方案来编写(官网也有说明)! 这里做个总结 第一步:先引入jdk [maven]...Web3j web3 = Web3j.build(new HttpServ
  • web3.js与智能合约交互

    千次阅读 热门讨论 2018-03-06 15:42:05
    首先放上官方API:https://web3js.readthedocs.io/en/1.0/index.html工具:Truffle v4.0.4 ganache-1.1.0-beta(ui界面版)nodejs 8.9.4npm 5.6.0 web3 1.0.0思路:1、先...2、用npm创建另外一个项目,使用web3和...
  • web3.js交易方法的调用方式汇总

    千次阅读 2018-07-28 21:33:42
    web3.js中的交易方法调用: (1)调用方式1 contractAddr.register(amount, {from: account}); 注意一定要传from参数,也就是哪一个账户去调用的。否则会调用失败。【from参数不能省略】 (2)调用方式2 ...
  • 安装web3.js连接以太坊开发环境

    万次阅读 2018-05-12 21:21:14
    0. Web3.js提供了用于和geth通信的JavaScript API。内部使用JSON RPC协议与geth通信1. 安装 node.js2. 安装 npm install web3 如果安装失败 执行:npm install web3@^0.20.03. 更新npm:npm i npm to update4. ...
  • web3.eth.getBalance

    千次阅读 2018-04-21 18:53:42
    web3.eth.getBalance(addressHexString [, defaultBlock] [, callback]) 参数: addressHexString: String - 要查询余额的地址。 defaultBlock: Number|String -(可选)如果不设置此值,将使用web3.eth....
  • 1. 写在前面 一直觉得Ethereum相关的...既然web3只是nodejs环境下的一个JavaScript模块,我一直想通过最简单、纯粹的nodejs环境去直接使用web3,这样能够对web3模块有个比较立体的认识。于是,便有了这篇博文。 为...
  • 成功解决Error: Cannot find module 'web3'

    万次阅读 2018-07-05 15:29:21
    成功解决Error: Cannot find module 'web3' 目录 解决问题 解决思路 解决方法 解决问题 Error: Cannot find module 'web3' 解决思路 错误:找不到模块“web3” 解决方法 npm init ...
  • 这是web3.js开发者在创建合约对象时很容易发生的错误,其实就是不同版本web3.js带来的API变化问题。 请检查你的web3.js版本: 如果version<1.0.0,使用: web3.eth.contract...
  • 基于Threejs的web 3D开发入门

    千次阅读 2017-10-20 00:00:00
    作者简介:朱海洋,高级工程师,增值产品部QQ会员营收团队负责人,目前团队负责QQ会员、靓号、SVIP+、大王超会等项目,有丰富的Web前端架构经验。| 导语 随着软硬件的发展,在PC和移动端浏览器上进行web 3D开发的...
  • web3.js与合约交互

    万次阅读 2018-04-01 14:24:08
    web3.js是以太坊提供的一个Javascript库,它封装了以太坊的JSON RPC API,提供了一系列与区块链交互的Javascript对象和函数,包括查看网络状态,查看本地账户、查看交易和区块、发送交易、编译/部署智能合约、调用...
  • web3j实现与智能合约交互

    千次阅读 2018-03-25 21:25:54
    web3j文档:https://web3j.readthedocs.io/en/latestjava-ipfs-api文档:https://github.com/ipfs/java-ipfs-api之前一直用nodejs调用web3.js与智能合约交互,但是没找到与Java项目进行交互的方法。原来以太坊是有...
  • 前言 web3.js文档http://web3js.readthedocs.io/en/1.0/ 前面的文章也提到了,使用web3.js可以与以太坊进行互动。这篇文章的主要内容如下: ...现在使用npm install web3安装的web3.js,会发现node_m...
  • 区块链编程一翻译篇<一>:web3j介绍

    万次阅读 2017-05-28 08:48:24
    web3jweb3j是一个轻量级、反应式、类型安全的java和android的类库,用于连接以太坊网络的客户端。 开发者不用开发额外的整合代码,在以太坊区块链平台上工作。 Java and the blockchain为开发者提供了区块链、...
  • 准备工作将最新版本的web3j加入到项目配置中MavenJava 8: <groupId>org.web3j <artifactId>core <version>2.2.1 </dependency>Android: <groupId>org.web3j</groupId
  • 采用web3.js将数据写入到区块链中

    千次阅读 2017-12-13 17:22:13
    let Web3 = require("web3"); let fs = require("fs"); let web3 = new Web3(); web3.setProvider(new Web3.providers.HttpProvider("http://192.168.1.10:8545"));let log = { time:(new Date).getTime(), t
  • 以太坊钱包的开发2 -- web3的应用

    万次阅读 2018-03-22 16:58:47
    在以太坊的钱包开发1中,我们介绍了node环境搭建、本地...在app.js中,var Web3 = require('web3'); if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // set the provider y...
  • web3 Github: https://github.com/ethereum/web3.js/ web3.js是以太坊提供的一个Javascript库,它封装了以太坊的RPC通信API,提供了一系列与区块链交互方法,使js与以太坊交互变得简单。 infura 官网: ...
  • 这个问题的意思就是找不到node节点的... init_web3_1_0_version () { this.web3 = new Web3( Web3.givenProvider || new Web3.providers.HttpProvider( 'http://127.0.0.1:8545 ' ) ); console.log( 'this.web3...
  • 以太坊 web3j for java 配置和使用 &lt;1&gt; 官网:here 环境: mac &amp; android studio 一、 导入包 在app/build.gradle中:compile 'org.web3j:core:3.0.1-android' 即: ...
  • 刚开始使用web3j,我有一些基本的麻烦。 我已经可以成功如何获得一个EthBlock,并检索里面的所有信息。我想看看这个块中的交易列表,我该怎么做? 我可以调用: List&amp;lt;TransactionResult&amp;gt; ...
  • 首先一点:web3的安装支持: python 2.7,3.4,3.5 的版本,其中 web3函数已经不在支持 2.7的版本了。ps: windows环境,VC++后来已经安装1. 查阅资料后,我首先使用 pip install web3的方式安装,但是!!!!遇到这么一...
  • Web3 JavaScriptÐappAPI为了让您的应用程序能够在以太坊上工作,您可以使用web3.js库web3提供的对象。在底层,它通过RPC调用与本地节点通信。web3.js与任何暴露RPC层的以太坊节点一起工作。 web3包含eth对象 - web...
  • web3j 部署合约环境:mac os &amp;amp; android studio官网:here以太坊 web3j for java 配置和使用&amp;lt;1&amp;gt;: here以太坊 web3j for java 使用 - 为用户创建凭证credentials &amp;lt;2&...
  • 问题描述:最近在前端想获取到当前用户eth账户...网上查找了几种方法之后终于解决了。 1.问题代码:let user_address = web3.eth.account[0] 2.报错:无法获取到当前的account[0]  3.浏览器使用的钱包插件:metamask 

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,116,290
精华内容 2,046,516
关键字:

web3