welcom ! Handel home

顯示具有 BlockChain 標籤的文章。 顯示所有文章
顯示具有 BlockChain 標籤的文章。 顯示所有文章

2022年9月15日 星期四

web3.js function 介紹

 

#Web3 Get Node

判斷目前使用者所連接是那種型態的Ethereum節點,Testrpc、Geth或Metamsak…等。

web3.version.getNode(function(error, result){

if(error){

// error handle

} else {

// do something

};

});

#Web3 Syncing

判斷使用者所連接的Ethereum節點是否正在做同步的動作。正在同步為True,否則為False。

web3.eth.getSyncing(function(error, result) {

if(error) {

// error handle

} else {

// do something

}

});


#Web3 Coinbase

查看連接Ethereum節點的coinbase address。coinbase是專門存放挖礦所獲得獎勵的read only帳戶。

在Geth Node環境下可以使用Geth console下指令web3.miner.setEtherbase()去修改coinbase address。


web3.eth.getCoinbase(function(error, result) {

if(error) {

// error handle

} else {

// do something

}

});

#Web3 Default Account

查看目前連接Ethereum節點的deault account address。deault account是read/write only。

當我們在進行某些操作例如sendTransaction時,若沒有特別指定要從哪一個帳戶發出,

則默認就是使用deault account。因為每個Ethereum節點實作的方式不同,default account不一定有定義,使用前最好檢查一下。


web3.eth.defaultAccount// 為了避免default account undefined的話, 可以改寫成下面的Code

var defaultAccount = web3.eth.defaultAccount;

if(!defaultAccount) {

web3.eth.defaultAccount = web3.eth.accounts[0];

defaultAccont = web3.eth.accounts[0];

}

#Web3 Get Balance

取得帳戶裡的餘額。分成同步和非同步兩種。

使用web3.eth.getBalance()所獲得餘額的單位是Wei。

web3.fromWei()就是把Wei轉成其他單位,下面範例則是轉成Ether。

toFixed()是我們只取到小數點後兩位數。

getBalance()的第二個參數可以指定要從那個Block讀取資料。

web3.eth.defaultBlock默認是latest,意思就是從最新的Block讀取該帳戶的餘額。


/* Get Balance Sync */

var balance = web3.fromWei(web3.eth.getBalance(web3.eth.accounts[0]), 'ether').toFixed(2);/* Get Balance Async */

web3.eth.getBalance(web3.eth.accounts[0],web3.eth.defaultBlock,function(error,result){

if(error){

// error handle

} esle {

var balance = web3.fromWei(result,'ether').toFixed(2);

}

});

#Web3 Lock/Unlock Account

上鎖和解鎖帳戶。

對於某些特定的操作必須先把帳戶先unlock才能進行,例如sendTransaction()相關操作。

web3.personal.unlockAccount()的第三個參數duration可以設定要解鎖多久。

若使用者連接的Etherum節點是Testrpc或Metamask,可以不須作lock/unlock動作。

若是在Geth環境下,則在sentd transaction前必須先unlock帳戶。

/* Lock Account */

web3.personal.lockAccount(account, passwd, function(error, result){

if(error) {

// error handle

} else {

// do something

}

});

/* Unlock Account */

web3.personal.unlockAccount(account, passwd, duration,function(error, result){

if(error) {

// error handle

} else {

// do something

}

});


#Web3 Send Transaction

傳送交易。

web3.eth.sendTransaction()的第一個參數txnObject是一個JSON format的物件。

txnObject可以指定這次transaction的資訊。

=>from是指從哪個帳戶送出,若無指定默認是default account。

=>to是送到那個帳戶。

=>value則是要傳送的金額。


其他還有像是gas、 gasPrice、data、nonce…等參數可以指定。

傳送完後可以得到transaction hash,使用web3.eth.getTransactionReceipt(hash)去查詢transaction的狀態。


var txnObject = {

"from": fromAccount,

"to": toAccount,

"value": web3.toWei(1, 'ether'),

// "gas": 21000,          // (optional)

// "gasPrice": 4500000,   // (optional)

// "data": 'For testing', // (optional)

// "nonce": 10            // (optional) 

};


web3.eth.sendTransaction(txnObject, function(error, result){

if(error) {

// error handle

} else {

var txn_hash = result; //Get transaction hash

}

});

#Web3 Deploy Contract

Deploy contract有兩種方式,

一種是使用Web3.js contract的new(),另一種是使用sendTransaction()的方式。

這裡只列出contract new()的方式,sendTransaction()方式可以從Web3ApIScript的範例中看到。

在deploy contract之前我們需要先complie contract的sol檔來獲得abi和bytecode。

利用abiDefinition建立contractInstance並將bytecode放入data欄位中。constructor_param則是contract 初始化所使用的參數。

使用contract new()來進行佈署。執行完new()之後,callback function一共會被呼叫兩次。

第一次回傳transaction hash,第二次則是contract address。


var contractInstance = web3.eth.contract(abi);

var params = {

from: fromAccount,

data: bytecode,

gas: gas

};

var constructor_param = 10; 

//contract init

paramcontractInstance.new(constructor_param, params, function(error, result){

if(error) {

// error handle

} else {

if(result.address){

var contractAddress = result.address;

} else {

var txhash = result.transactionHash;

}

}

});




Web3 Interact Contract

與smart contract互動的方式主要分成,取得contract資料的call和改變contract資料的send。

使用call只是單純取得contarct資料,並不會改變contract的狀態,所以不會花費任何費用。

呼叫call()時要有contract abi和contract address。contract.METHOD.call()的METHOD是放contract中所定義的function名稱,以下面的例子就是getNum。


var contract = web3.eth.contract(abi);

var contractInstance = contract.at(address);

/* contractInstance.METHOD.call, METHOD=getNum is the function of contract*/

contractInstance.getNum.call(function(error, result) {

if (error) {

// error handle

} else {

// result is string

// do something

}

});


若想要改變contract中的資料就必須使用send。這裡的send指的是send transaction。

因為會改變contract中的資料,需要繳交手續費給礦工幫忙把資料紀錄在block中。

改變的資料一樣會存放在block中,等同於發起了一筆transaction。使用contract.METHOD.sendTransaction()來改變contract資料。

回傳該transaction的hash。METHOD一樣是指contract所定義的function名稱,下面例子就是setNum。parameterValue則是要賦予contract的新值。


var contract = web3.eth.contract(abi);

var contractInstance = contract.at(address);

var txnObject = {

from: fromAccount,

gas: estimatedGas

};// contractInstance.METHOD.sendTransaction, METHOD=setNum is the function of contract


var parameterValue = 5 ;

contractInstance.setNum.sendTransaction(parameterValue, txnObject,function(error, result){

if(error){

// error handle

} else {

// do something

}

});


以太坊生態系統 Ecosystem Resources(生態資源)


學習和理解以太坊生態系統的可用DApps,服務,寫作和知識庫的指南,

專注於生態系統發展


Wallets(錢包)

• Metamask-支援ERC Token的Chrome擴充套件以太幣錢包

• Gnosis multisig wallet-經過稽核的多重簽名錢包

• Mist-瀏覽並使用以太坊網路上的DApps

• Exodus-帶有Shapeshift整合的桌面錢包

Web Wallets

• MyEtherWallet-開源工具,可輕鬆安全地與區塊鏈進行互動

• Ether Address Lookup-用於網路釣魚防護和Eth地址突出顯示的Chrome擴充套件程式

• MyCrypto-用於生成以太錢包,處理ERC-20Token以及更輕鬆地與區塊鏈互動的開源客戶端工具

• Portis-基於網路的錢包,方便使用者登入DApp

• Eth lightwallet–節點和瀏覽器的輕量級JavaScript錢包

• SpankCard-瀏覽器中的以太坊錢包,支援付款渠道

• Mnemonic generator–生成單詞助記符和關聯的公鑰/私鑰對。選擇“以太坊”作為數字貨幣以生成以太坊地址。適用於truffle-hd-wallet。

Mobile Wallets(手機錢包)

• Toshi-移動DApp瀏覽器和錢包

• Cypher– 移動DApp瀏覽器

• Trust– 適用於ERC Tokens的移動錢包

• Status-適用於以太坊的免費開源移動作業系統

• imToken-功能豐富的數字資產移動錢包,支援多鏈資產管理,DApp瀏覽和安全,私密的價值交換

• Jaxx-手機和桌面錢包,集成了Shapeshift支援

• WallETH-原生Android以太坊錢包

• eth-wallet-light–為移動裝置最佳化的輕量級JavaScript錢包

Hardware Wallets(硬體錢包)

• Trezor-原裝硬體錢包

• Ledger-支援多種加密貨幣和Token

• KeepKey-簡單的硬體錢包

Gas price calculators and tools(Gas價格計算器與工具)

• EthGasStation-估算tx價格與時間的網站

• Petrometer-彙總從指定的以太坊地址傳送的所有交易的每日和總Gas消耗量

• CryptoProf-用於智慧合約的Gas分析器


Services(服務)

• Oracalize-適用於智慧合約的Oracle服務

• Infura– API閘道器,你無需託管自己的ETH節點

• Quiknode-用於啟動個人Parity / Geth節點的服務

• Regis-數字資產註冊管理機構

• Viant-如果用例是面向業務流程,請考慮使用Viant作為後端

• uPort-全部身份解決方案

• Ether Address Lookup-用於網路釣魚防護和Eth地址突出顯示的Chrome擴充套件程式

• Netstats-以太坊網路統計

• ENS– ENS提供了一種安全且分散的方式,使用簡單,易讀的名稱來處理區塊鏈內外的資源

• Name Bazaar-透過以太坊名稱服務註冊的名稱交換的點對點市場

• Quantstamp-一項服務,提供收費的自動和手動智慧合同安全稽核

• SmartCheck-針對安全漏洞和最佳實踐的Solidity原始碼的靜態分析

• MD4 Online Hash Function-使用各種雜湊演算法選項雜湊輸入的工具

• iExec SDK-使智慧合約能夠在鏈外執行功能或應用程式。支援作為Docker映象提供的任何遺留應用程式。

Knowledge/Education(知識/教育)

• Awesome Buggy ERC20 Tokens-受影響的ERC20智慧契約中的漏洞集合

• Solidity idiosyncrasies– Solidity陷阱、限制和特質

• Ethereum development with Go–基於Go語言的以太坊開發書籍

• Consensys Academy– 課程

• B9Lab– 付費課程

• Blockgeeks-關於Solidity/ dapp開發的付費課程。

• Chainshot building blocks-免費的基於專案的課程和挑戰

• Delegate call-問答網站

• Stackexchange-問答網站

• r/EthDev– reddit分模組

• Ethernaut– Web3 / 基於戰爭遊戲的Solidity

• Reducing Gas Fees-減少交易Gas的提示和技巧

• Dapp University-免費影片教程

• Attacks on Smart Contracts

• Zastrin-關於Solidity / Dapp Development的付費課程。

Security best practices(安全最佳實踐)

• Smart contract best practices– 由 ConsenSys製作

• Safety wiki-以太坊基金會安全維基

Solidity Games!(Solidity遊戲)

• OpenZeppelin Ethernaut

• Cryptozombies-世界上最好的不死教程

• Capture the Ether

Scaling(擴充套件)

• Comprehensive Medium article關於以太坊的各種解決方案

Reference(參考)

• Wiki-覆蓋與以太坊相關的所有事物的以太坊維基

• Yellow Paper-以太坊的正式規範

• Beige Paper-用non-yellow-paper syntax語法重寫黃皮書

• EthOn-本體論是域內概念和關係的形式化,EthOn是用RDF和OWL編寫的

• Mastering Ethereum–由Andreas M. Antonopoulos,Gavin Wood和其他許多人編寫

• EVM opcodes-以太坊操作碼和指令參考

• EVM illustrated-這是關於以太坊虛擬機器的插圖文件

• 4bytes-常用智慧合約功能的4位元組識別符號列表功能簽名

• Solidity cheat sheet– Solidity語法的快速概述

Governance(監管)

• Ethresear.ch-參與以太坊研究工作的半公共論壇,包括但不限於:Casper,Sharding,EVM改進,Crytpeconomics,Plasma和State-channels

• Fellowship of Ethereum Magicians-該討論區促進整個以太坊社群內個人之間的有意義的溝通

• EIPs-以太坊改進提案庫

Block explorers(區塊瀏覽器)

• Etherscan-檢視Eth交易和合約程式碼的主流方式

• POA Explorer-開源以太坊區塊瀏覽器,由Ethprize資助,由POA開發

• QuickBlocks– QuickBlocks是一組軟體庫,應用程式,工具和示例,允許您檢索以太坊區塊鏈資料。更快、具有更高的資訊內容、以完全分散的方式、以完全自動化的方式和高度免維護

• Etherchain lite-輕量級私人以太坊鏈瀏覽器

• Alethio EthStats 2.0即將到來

• Supermax-以太坊上智慧合約的活動和事件日誌的實時資料饋送

Decentralized Exchanges(去中心化交易所)

• Airswap

• Radar relay

• ERC Dex

• DDEX

• Ethfinex

• Shark Relay

• LedgerDex

• Bamboo Relay

• Instex

• Starbit

• Opensea.io

• Bancor

• Kyber

• Gnosis Dutch Exchange

Incentivisation / Monetisation Tools(激勵/貨幣化工具)

• Gitcoin-為開源提供資金或尋找開源工作的賞金網路

• CodeFund– Ethical Advertising Platform for Open Source

Awesome lists(其他範例)

• Awesome Cryptoeconomics-密碼經濟研究和學習材料的管理列表

• Awesome Solidity-一個很棒的實體資源列表,庫,工具等等

• Awesome EVM– 以太坊虛擬機器列表

• Awesome State-Channels-在以太坊上有關狀態通道的資源管理列表.

• DEX protocols–去中心化交易的協議列表

• Ethereum Token Standards– 以太坊Token標準的詳盡列表

原來小白要成為技術大咖,要學這麼多,註定又是一個接一個的學習型週末!

如果大家也有學習資源,歡迎大家掃碼進群,一起分享,共同進步!

小編提醒大家,一定記得點贊、收藏、留言和轉發哈

原文連結:

https://github.com/ConsenSys/ethereum-developer-tools-list/blob/master/Tools.md

https://github.com/ConsenSys/ethereum-developer-tools-list/blob/master/EcosystemResources.md

BTS BitShares ( 比特股)


bts-cn-docs
比特股 BitShares (BTS) 中文技术文档
建这个库的目的是搜集和整理比特股 BitShares (BTS) 相关的中文技术文档,方便开发者和爱好者使用,以及共同维护。

目录/索引
• 
如何编译
○ 使用 Visual Studio 2015 编译 BitShares-Core
○ Win 10 编译bitshare-core
○ CentOS编译BTS节点程序及命令行钱包
• 
如何集成/对接
○ BTS交易所对接指南(单节点版)

相关资料

英文资料
• https://how.bitshares.works/ 针对终端用户的文档
• https://dev.bitshares.works/ 针对开发者的文档
• https://docs.bitshares.build/ 另一批文档
• https://github.com/bitshares/bitshares-core/wiki 一些核心开发文档
• https://docs.bitshares.org/ 目前是重定向到 https://how.bitshares.works/
• https://doxygen.bitshares.org/hierarchy.html 这个是从代码生成出来的文档,包含代码里的文档性注释。
• https://github.com/bitshares/awesome-bitshares 相关资料链接大全,有100多个链接
• https://bitsharestalk.org/index.php?topic=23925.msg303814#msg303814 搭节点
• https://steemit.com/bitshares/@ihashfury/distributed-access-to-the-bitshares-decentralised-exchange 搭网页钱包

钱包
• 网页钱包
○ https://wallet.bitshares.org/
○ https://develop.bitshares.org/
○ https://bts.exchange/
○ https://ex.xbts.io/
○ https://iobanker.com/
○ GDEX https://www.52bts.net/
○ https://dex.delion.online/
○ https://evrazdex.org/
○ 测试网 https://test.xbts.io/
• 个性化网页钱包
○ 鼓鼓 https://m.magicw.net/
○ XBTS APP (支持AMM) https://app.xbts.io/
• 手机钱包
○ BTS++ https://app.btspp.io/
○ BiTSy http://www.bitsy-wallet.com/
○ EVRAZ https://github.com/evraz-org/EVRAZ-smartphone-application
• 轻钱包下载
○ https://github.com/bitshares/bitshares-ui/releases/latest
• 重钱包(节点)下载
○ https://github.com/bitshares/bitshares-core/releases/latest

扩展 API
• https://api.bitshares.ws/docs
• https://api.bitshares.build/api-docs
• https://cryptofresh.com/api/docs
• https://xbts.io/cmc-api
• https://api.testnet.bitshares.ws/docs - 测试网

区块链浏览器
• https://blocksights.info
• https://bts.ai
• https://cryptofresh.com

数据分析
• https://kibana.bts.mobi

中文资料
(以下排名不分先后)
• boombastic 的 Steemit 博客 https://steemit.com/@boombastic
○ BitShares API 服务器架设指南 - 个人篇
○ BitShares API 服务器架设指南 - 公共API篇
• ETY001 的文章
○ 用 docker compose 搭建 bitshares elastic search
○ 重写了我的bitshares-elasticsearch的docker-compose
○ 对之前的 Bitshares Elastic Search 增加 Kibana
○ 解决nginx反代kibana显示空白页的问题
○ 快速搭建私有单节点 Bitshares Testnet(一)
○ 快速搭建私有单节点 Bitshares Testnet(二)
○ 使用 bitsharesjs 库创建新用户Demo
○ 在自有私链上使用bitshares-js库
• shulthz的几个教程 https://shulthz.github.io/
○ 简易cli_wallet命令行钱包的教程
○ BTS: 帐号(云)模式转为本地钱包模式
○ BTS: 如何查看三对公私钥
○ BTS(比特股)新手相关教程-资料-钱包内盘-承兑商-社交等信息汇总
• 窗外一叶 的博客 https://www.cwyyprog.com/tag/bitshares/
○ Win 10 编译bitshare-core witness node
○ 浏览/编译bitshares源代码的配置
○ 比特股源码阅读笔记系列
• legendx 的 Steemit 博客 https://steemit.com/@legendx
○ DPOS共识算法 -- 缺失的白皮书
• Cifer 的 Steemit 博客 https://steemit.com/@cifer
○ Graphene 源码阅读 ~ 基础知识
○ Graphene 源码阅读 ~ 源码结构
○ Graphene 源码阅读 ~ 数据库篇 ~ 对象模型
○ Graphene 源码阅读 ~ 数据库篇 ~ 索引模型
○ Graphene 源码阅读 ~ 数据库篇 ~ 对象序列化
• 老鱼 (chaimyu) 的 Steemit 博客 https://steemit.com/@chaimyu
○ bitshares研究系列【mac下安装bitshares】
○ bitshares研究系列【visual studio编译调试bitshares】
○ bitshares研究系列【bitshares-ui代码分析之基本结构】
○ bitshares研究系列【bitshares-ui代码分析之api调用流程】
○ bitshares研究系列【bitshares-core api实现】
○ bitshares研究系列【operation的实现】
• 小福星(Pluswave)的博客 https://blog.xiaofuxing.name/
○ 比特股钱包模式和账号模式的安全性差异
○ bitsharesjs库详解二:交易广播
○ 比特股命令行神器:uptick (注:python)
○ bitsharesjs库详解一:ChainStore
○ 源码解析:bitshares-ui的钱包和帐号管理
○ 使用NODEJS解密bitshares网页钱包备份文件
○ 身份认证概念原型发布,目前的反馈和我的思考
• 剑有偏锋的比特股开发专题博客 http://www.jianshu.com/c/19c5791c8c7d
○ 比特股环境搭建
○ 编译比特股网页钱包
○ 比特股全节点witness_node参数翻译
○ 比特股命令行钱包cli_wallet参数翻译
○ 搭建比特股的水龙头注册服务
○ 比特股相关资源链接
• 比特帝国教程 http://jc.btsabc.org/
○ 自建节点(重钱包)
○ BTSBots——比特股内盘做市机器人开放使用教程(Javascript)
○ BTS内盘自动交易机器人的例子和源码(Python)
○ 比特股合规设计功能 ---“白名单”使用教程
○ 二元预测市场举例
○ 一单将资产的“手续费资金”全部刷出
○ 在windows环境下实现BTS2.0自动分红的一种方法
• 比特股论坛中文版 https://bitsharestalk.org/index.php/board,4.0.html
○ 见证人(witness)安装设置教程(老)
• Hi区块链资讯站及公众号 https://www.hibtc.org/
○ 一分钟安装完比特股重钱包,可以媲美中心化交易所一样的交易速度
• 邱绍锡的博客 https://qiushaoxi.com/
○ Bitshares 私链部署witness节点 / 原文
○ 使用 NodeJS 调用 API 接口 进行转账和 Bitshares 内盘交易 / 原文
• BTS500的博客 https://bts500.github.io/categories/Bitshares/
○ Bitshares 开发者系列(1)—— Api接口的访问方式
○ Bitshares 开发者系列(2)—— Bitsharesjs-ws 库源码解读
• 胡桃夹子的博客 http://hutaow.com
○ BitShares插件开发入门
• chouheiwa的github
○ Java-Cli-Wallet —— 一个java版的Cli-wallet库(支持转账,挂单,注册账户,查询信息等等常用api)
○ iOS-Cli-Framework —— 一个专门为iOS设备编写的cli-wallet库
• 本库中 @abitmore 的部分原创文档也同步发到 Hive 博客 https://hive.blog/@abit


BlockChain 共識機制簡介

 


ETH POS 合併成功 2022-09-15

 ETH正徹底改變金融世界

紀念這金融史的一刻





2022-9-15 14:00 by Handel






合併(Merge)不是以太坊的最終目的地,發展路徑是:
合併(Merge)= >激增( Surge ) = >邊緣( Verge )
Merge是關於從POW 轉移到POS;
Surge 是關於引入分片;
Verge 是關於Verkle 樹,以幫助優化以太坊上的存儲並幫助減少節點大小。

長遠的目標:
• 讓以太坊具有量子抗性,這樣你就不會隨便運行量子計算機來生成別人的私鑰;
• 如果zkEVM運行良好,那麼在基礎層中製作txn空間,使滾動的成本大大降低;
• 尋找更強大的密碼學;
• 最後,保持開放的心態!