⑴ 以太坊获取测试链代币
发起以太坊交易时需要消耗以太币,开发智能合约做测试时如果在主网做测试成本会很高,并且主网的速度也比较慢,以太坊官方考虑到大家的这个需求提供了几条测试链供大家使用,比较知名的有以下这几个
以太坊的主测试网,环境最接近主网环境,有实际的雷锋矿工在挖矿,只不过难度会比主网低很多,不过由于 Ropsten 采用与主网完全一样的 PoW 共识,有时也就会和主网一样拥堵,在这条链上做测试更容易测试出智能合约或者dapp里潜在的问题
用的是 PoA 机制,无需挖矿,所以出块很快而且很稳定
和Rinkeby同样使用的是 PoA 机制
打开这个网址 https://faucet.metamask.io/
点击 request 1 ether from faucet 按钮会通过web3连接钱包,获取到钱包当前账户的以太坊地址,这个我使用的钱包是MetaMask,如果你没有装支持web3访问的钱包,可以参考这篇文章安装
https://www.jianshu.com/p/a84fe16f1af7
点击连接
连接成功后底部会生成一笔交易,hash值
等交易确认后一个以太坊就到账了
Rinkeby获取测试币相对麻烦些,需要注册twitter账号(需要翻墙)
打开这个网址 https://twitter.com/intent/tweet?text=Requesting%20faucet%20funds%20into%%20on%20the%20%23Rinkeby%20%23Ethereum%20test%20network
把推文中替换成你的地址点击TWEET,发送成功后点击分享图标选择Copy link to Tweet,把推文的链接复制下来
然后打开Rinkeby测试币水龙头网页 https://www.rinkeby.io/#faucet
把刚才那个推文链接复制进输入框,点击Give me Ether
根据你的需要选择要多少个代币,要的越多到账越慢😓,到账时间相对其它的测试链很慢,如果着急就用别的链做测试
打开这个网址 https://faucet.kovan.network/ ,需要使用github账号登陆
登陆成功后输入以太坊地址,点击发送就好了,转账交易就提交到链上了
同样的等待交易确认就能收到一个以太币了
⑵ 【ETH钱包开发04】web3j转账ERC-20 Token
在上一篇文章中讲解了ETH转账,这一篇讲一下ERC-20 Token转账。
【ETH钱包开发03】web3j转账ETH
1、直接用web3j的API
2、java/Android调用合约的 transfer 方法
不管用哪种方式来转账,你都需要先写一个solidity智能合约文件来创建ERC-20 Token,然后部署合约,最后才是通过客户端来调用。
注意:erc-20 token转账和eth转账的区别如下:
1、erc-20 token创建交易对象用的是这个方法 createTransaction
2、erc-20 token需要构建 Function ,它其实对应的就是erc-20 token合约中的那些方法。它的第一个参数就是ERC20中那几个方法的名称,第二个参数的话就是对应合约方法中的参数,第三个参数是和第二个参数对应的,按照我那样就行了。转账的话就是 transfer ,我们从合约的 transfer 可以看到第一个参数是收款地址,第二个参数是金额,所以 Function 这里对应起来就好。
这种方法不需要使用web3j封装的方法,而是直接调用solidity合约的方法。
步骤
1、web3j加载一个已经部署的合约
2、验证合约是否加载成功 isValid
3、如何加载合约成功,则调用合约的 transfer 方法
注意:
1、这里的 TokenERC20 是根据solidity智能合约生成的对应的Java类,用于java/Android和智能合约交互的,如果你对这里不太清楚,不妨看看我之前的一篇文章。
以太坊Web3j命令行生成Java版本的智能合约
2、如果加载合约失败,可能的一个原因是合约对应的Java类中的 BINARY 的值不对,这个值是你部署合约成功之后的bytecode,你最好检查对比一下。
我发送一笔交易,可以通过这个地址查询
https://rinkeby.etherscan.io/tx/
⑶ 什么是Web3
中心化帮助数十亿人上网,并创建了稳定、强大的基础设施。与此同时,少数中心化实体在大片互联网上占有一席之地,单方面决定应该允许什么和不应该允许什么。
Web3 是解决这个难题的答案。Web3 不是由大型科技公司垄断的互联网,而是去中心化,并由其用户构建、运营和拥有。Web3 将权力掌握在个人而非公司手中。在讨论 Web3 之前,让我们先来看看我们是如何走到这一步的。
大多数人认为互联网是现代生活的持续支柱——它是被发明出来的,从那以后就一直存在。然而,我们大多数人今天所知道的互联网与最初想象的完全不同。为了更好地理解这一点,将互联网的短暂历史分成松散的时期是有帮助的——web 1.0 和 web 2.0。
1989 年,在日内瓦的 CERN,Tim Berners-Lee 正忙于开发后来成为互联网的协议。他的想法?创建开放的、分散的协议,允许从地球上的任何地方共享信息。
互联网的第一次诞生,现在被称为“Web 1.0”,大约发生在 1990 年到 2004 年之间。Web 1.0 上的互联网主要是公司拥有的静态网站,用户之间的互动几乎为零——个人很少生产内容——导致它被称为只读网络。
随着社交媒体平台的出现,Web 2.0 时期开始于 2004 年。Web 不再是只读的,而是演变为可读写的。公司不再向用户提供内容,而是开始提供平台来共享用户生成的内容并参与用户与用户的交互。随着越来越多的人上网,少数顶级公司开始控制网络上产生的不成比例的流量和价值。Web 2.0 也催生了广告驱动的收入模式。虽然用户可以创建内容,但他们并不拥有它或从它的货币化中受益。
“Web 3.0”的前提是以太坊联合创始人 Gavin Wood 在 2014 年以太坊推出后不久创造的。 Gavin 提出了一个解决许多早期加密货币采用者认为的问题的解决方案:互联网需要太多的信任。也就是说,今天人们知道和使用的大多数互联网都依赖于信任少数私营公司来为公众的最大利益行事。
Web3 已成为一个包罗万象的术语,代表了一个新的、更好的互联网的愿景。Web3 的核心是使用区块链、加密货币和 NFT 以所有权的形式将权力交还给用户。 2021 年 Twitter 上的一篇帖子 说得最好:Web1 是只读的,Web2 是读/写的,Web3 将是读/写/拥有的。
尽管提供一个严格的定义 Web3 是什么具有挑战性,但有一些核心原则指导它的创建。
尽管 Web3 的杀手级功能不是孤立的,也不适合整齐的类别,但为简单起见,我们尝试将它们分开以使它们更易于理解。
Web3 以前所未有的方式让您拥有数字资产的所有权。例如,假设您正在玩 web2 游戏。如果您购买游戏内物品,它会直接与您的帐户绑定。如果游戏创建者删除您的帐户,您将丢失这些物品。或者,如果您停止玩游戏,您将失去投资于游戏内物品的价值。
Web3 允许通过 非同质化的代币 (NFT) 直接拥有所有权。其他人甚至游戏的创造者,都没有权力剥夺你的所有权。而且,如果您停止玩游戏,您可以在公开市场上出售或交易游戏内你的物品并收回它们的价值。
平台和内容创作者之间的权力动态是严重失衡的。
OnlyFans 是一个用户生成的成人内容网站,拥有超过 100 万内容创作者,其中许多人使用该平台作为他们的主要收入来源。2021 年 8 月,OnlyFans 宣布了禁止色情内容的决定。该公告在平台上的创作者中引发了愤怒,他们认为他们帮助创建了一个平台现在却被这个平台被剥夺了收入。在强烈反对之后,这个决定很快被推翻。尽管创作者赢得了这场战斗,但它突显了 Web 2.0 创作者的一个问题:如果你离开一个平台,你就会失去声誉并追随你的人。
在 Web3 上,您的数据位于区块链上。当您决定离开一个平台时,您可以将您的声誉带走,将其插入另一个更符合您的价值观的接口。
Web 2.0 要求内容创建者信任平台而不是更改规则,但抵抗审查是 Web3 平台的原生特性。
传统上,您将为您使用的每个平台创建一个帐户。例如,您可能有一个 Twitter 帐户、一个 YouTube 帐户和一个 Reddit 帐户。想要更改您的显示名称或个人资料图片?您必须在每个帐户中执行此操作。在某些情况下,您可以使用社交登录,但这会带来一个熟悉的问题——审查。只需单击一下,这些平台就可以将您锁定在整个在线生活之外。更糟糕的是,许多平台要求您信任他们的个人身份信息才能创建帐户。
Web3 通过允许您使用以太坊地址和 ENS 配置文件控制您的数字身份来解决这些问题。使用以太坊地址可以跨平台提供安全、抵抗审查和匿名的单一登录。
Web2 的支付基础设施依赖于银行和支付处理程序,不包括没有银行账户的人或碰巧住在错误国家境内的人。Web3 使用 ETH 等代币在浏览器中直接汇款,不需要受信任的第三方。
更多关于 ETH
尽管当前形式的 Web3 有许多好处,但生态系统仍然必须解决许多限制才能使其蓬勃发展。
任何人都可以零成本使用重要的 Web3 功能,例如使用以太坊登录。但是,交易的相对成本仍然让许多人望而却步。由于高昂的交易费用,Web3 不太可能在不太富裕的发展中国家使用。在以太坊上,这些挑战正在通过 网络升级 和 第 2 层扩展解决方案来解决 。该技术已经准备就绪,但我们需要在第 2 层采用更高级别的技术,以使每个人都可以访问 Web3。
目前使用 Web3 的技术门槛太高了。用户必须理解安全问题、理解复杂的技术文档并浏览不直观的用户界面。 尤其是钱包提供商 正在努力解决这个问题,但在 Web3 被大规模采用之前还需要更多的进展。
Web3 引入了新的范式,这些范式需要学习与 Web2.0 中使用的不同的心智模型。随着 Web1.0 在 1990 年代后期越来越流行,类似的教育活动也发生了。万维网的支持者使用一系列教育技术来教育公众,从简单的比喻(信息高速公路、浏览器、网上冲浪)到 电视广播 。Web3 并不难,但它是不同的。让 Web2 用户了解这些 Web3 范式的教育计划对其成功至关重要。
Ethereum.org 通过我们的 翻译计划 为 Web3 教育做出贡献,旨在将重要的以太坊内容翻译成尽可能多的语言。
Web3 生态系统很年轻并且发展迅速。因此,它目前主要依赖于中心化基础设施(GitHub、Twitter、Discord 等)。许多 Web3 公司都在争先恐后地填补这些空白,但构建高质量、可靠的基础架构需要时间。
Web3 是一个年轻且不断发展的生态系统。Gavin Wood 在 2014 年创造了这个词,但其中许多想法直到最近才成为现实。仅在去年,人们对加密货币的兴趣就大幅增加,对第 2 层扩展解决方案的改进,对新治理形式的大规模实验以及数字身份的革命。
我们才刚刚开始使用 Web3 创建更好的互联网,但随着我们继续改进支持它的基础设施,互联网的未来看起来一片光明。
⑷ Python3 使用Web3.py查询以太坊账户余额
from web3 import Web3
def QuerryBalanceETH(accounts):
w3 = Web3(Web3.HTTPProvider('https://mainnet. infura .io/v3/ {此处设置自己托管账户ID} '))
#accounts = w3.eth.accounts
balance = w3.eth.getBalance(accounts,'latest')#latest表示使用区块链中最后一个块的状态,也就是最后的余额
print('balance@latest => {0}'.format(balance))
return balance
1、什么是Infura?
专业一点讲,Infura是一种IaaS(Infrastructure as a Service)产品,目的是为了降低访问以太坊数据的门槛。
通俗一点讲,Infura就是一个可以让你的dApp快速接入以太坊的平台,不需要本地运行以太坊节点。
从程序员的角度讲,Infura就是一个Web3 Provider,背后是负载均衡的API节点集群。使用它的好处就是,你永远不必担心连接的节点失效的问题,Infura会管理好这一切。
除此之外,Infura还可以很方便地接入IPFS,这是另外一个话题,这里就不讨论了。
最后,也是非常重要的一点:Infura目前是免费的。
2、如何使用Infura?
使用Infura首先需要注册一个账户,访问官网 https://infura.io ,点击注册并提供一个邮箱,会收到一封邮件,点击邮件中的链接激活就可以了,然后你就会看到下面的界面:
点击右上角的黑色按钮,创建新项目,就可以生成你专属的Project ID了(左边的红框)。
参考文章: https://blog.csdn.net/TurkeyCock/article/details/85103434
⑸ 「官方」搭建Web3:Filecoin与以太坊携手共进
这是Protocol Labs创始人Juan Benet在EthCC 2021上的演讲概要,查看完整内容:
https://www.bilibili.com/video/BV1eb4y1r7E1
Filecoin网络是面向生态的,它与Protocol Labs搭建模块化解决方案的倾向是一致的。因为它本来就是设计给其他人使用,所以Filecoin在Web3领域的其他栈、应用和生态里如鱼得水。自从其在2020年10月的启动开始,Filecoin已经增长到超过8 exbibytes的可用存储空间,有超过400个项目进入了这个生态。以太坊就是一个能持续证明其可协作性和共同利益的生态系统。
Filecoin + 以太坊
>>>>Filecoin和以太坊虚拟机(EVM)
Filecoin生态意识到网络支持智能合约的好处。最初,开发者社区相信架设在以太坊和Filecoin之间的桥服务足够在Filecoin上支持智能合约了。不过,通过桥来使用智能合约是很笨重的方式,相比于直接在以太坊实现智能合约的功能和可组合性更是不足。有一个提议是在Filecoin上加入以太坊虚拟机(EVM),从而在存储层启用对智能合约的支持,以及为这两个生态的结合提供更多机会。
>>>>开发者工具和资源
Fleek:让用户能为去中心化网络架设网站、存储和分发文件及开发dapp。Fleek可以让每一个人(从专业的开发者到日常的互联网用户)更容易以去中心化的方式创建app和存储文件,从而加速去中心化网络的采用率。Fleek可以在Filecoin上进行自动化存档,并通过ENS(以太坊域名服务)这样的应用来利用以太坊的生态系统。
https://fleek.co/
Web3.Storage:是一个让开发者在Filecoin去中心化存储网络上存取数据的简单接口。Web3.Storage为开发者(包括以太坊dapp开发者)提供了搭建应用的简单方式,这些应用可以带有冗余的去中心化的存储以及安全的内容寻址数据。
http://web3.storage/
PowerLoom:以去中心化的方式将链上和链下数据聚合起来以生成带有密码学证明的快照。它旨在通过一个丰富的节点和利益相关者生态系统(他们被激励参与到协议里)来搭建信任,并按需提供洞见。PowerLoom特别适用于以太坊DeFi这样的生态,这类系统是非常复杂的,而且需要基于验证的信任。
https://powerloom.io/
>>>>DeFi应用
SecuredFinance(https://secured-finance.com/)是一个综合平台,整合了基于智能合约的点对点固定利率贷款、抵押品管理服务、货币间交易和其他类型的利率产品。Secured Finance的协议是去中心化的点对点金融协议,提供了由以太坊智能合约赋能的区块链上的中后台银行业务。Secured Finance可以满足Filecoin网络内的需求,它提供的解决方案能够满足Filecoin存储提供者对FIL贷款的强烈需求。
>>>>数据市场
OceanProtocol(https://t.co/misApE3ggc?amp=1)是一个在Filecoin上搭建的数据市场。Ocean的数据token(data tokens)是以太坊ERC-20 token,可以轻易地用于发布和消费数据服务。如果你有1个数据token,你可以访问一个特定的数据服务。Ocean market是一个专门为数据服务的去中心化交易所,它分叉了一个Balancer AMM(自动化做市商)来降低gas成本。在这个市场中,用户可以对数据进行发布、购买、销售、消费和stake操作。
通过Filecoin,用户可以利用Ocean来发起自己的Filecoin数据市场,或创建一个Filecoin dataDAO或指数基金。通过Ocean Protocol的工具和Filecoin的去中心化存储数据库,我们正见证新生的开放数据经济。
>>>>视频应用
LivePeer:是一个去中心化的在线视频流媒体基础设施,由以太坊区块链确保安全性。将Filecoin和IPFS结合提供存储和内容分发功能后,去中心化视频应用就成为可能了。
https://livepeer.org/
Voodfy:正为私有的视频架设服务提供去中心化工具。这是一个多功能的安全流媒体解决方案,让用户能完全控制自己的内容,这包括了访问权的设定以及变现的方式。它利用了Livepeer、Ethereum、Textile Powergate和Filecoin.
https://voodfy.com/
VideoCoin:正搭建一个能可靠地创建、存储和交易基于视频的NFT解决方案,它可以绕过在以太坊上存储实际内容时固有的复杂性和费用。VideoCoin正将其去中心化视频处理网络与Filecoin整合起来,以搭建首个专门为创建和交易视频NFT服务的平台。这个平台是新生的全球数字收藏品市场急需的一部分。
https://videocoin.io/
>>>>NFT
nft.storage(http://nft.storage/)是一个由Protocol Labs实验室和Pinata支持的服务,它专门为存储NFT数据而设计。
nft.storage让开发者通过内容寻址和去中心化存储来保护其NFT资产和相关的元数据,确保所有的NFT遵循最佳实践以实现长期的可访问性。
未来的使用场景
随着Filecoin和Ethereum生态系统的成长和重叠,会出现更多的新生用例和开发者机会。一些可以进行创新的用例包括:
>>>>可组合的DeFIL
将存储和Defi的世界结合可以产生一些机会。人们可以将市场订单(如要价、出价和交易)带到一个去中心化交易所上,以观察市场是如何评判这些订单的价值的。通过这样的能力,生态系统可以开始想象硬件期货(hardware futures)和时空期货(spacetime futures)等的出现。
>>>>数据丰富的NFT
NFT将会越来越复杂,而Web3社区需要 探索 采用数据丰富(data-rich)的NFT的方式。VideoCoin已经将其视频处理引擎与Filecoin连接起来,以结合以太坊对NFT的支持能力及Filecoin的存储能力。像VideoCoin这样的工具可以用来创建一类新型的NFT,如短电影、视频片段和完整长度的专题特写。
>>>>按观看次数支付的媒体
通过在Filecoin上存储的信息,我们可以利用以太坊的token支持能力去创建由token保护的页面和媒体(文章、电影和音乐等)。我们可以复制Web2时代的按观看次数支付模式,而无需复制数据和广告模型。
这只是一个开始!Filecoin和以太坊生态有长期的协作 历史 和机会,未来可期。
⑹ 以太坊入门(三)用web3j进行以太转账及代币转账
上章讲到账户的查询,本章讲述账户转账。
代币转账和以太转账的区别在于,to地址是合约地址,而input是有三部分数据构成:transfer方法的哈希+收款人的地址+转账金额。此处比较难理解的正是Function部分,设置好参数以后,调用rawTransaction就可以了。
⑺ 以太坊如何使用web3.js或者rpc接口获取交易数据交易时间与确认数
如果要查询主网上的交易记录,可以使用etherscan。但是,如果是你自己搭建的私链,应该如何查询交易记录呢?
答案是你需要自己监听链上的日志,存到数据库里,然后在这个数据库中查询。例如:
varaddr=""
varfilter=web3.eth.filter({fromBlock:0,toBlock:'latest',address:addr});
filter.get(function(err,transactions){
transactions.forEach(function(tx){
vartxInfo=web3.eth.getTransaction(tx.transactionHash);
//这时可以将交易信息txInfo存入数据库
});
});
web3.eth.filter()用来监听链上的日志,web3.eth.getTransaction()用来提取指定交易的信息,一旦获得交易信息,就可以存入数据库供查询用了。
推荐一个实战入门,你可以看看:以太坊教程
⑻ web3.js如何新建以太坊账户
推荐提问的同学去看看这个完整的区块链新手入门的以太坊DApp开发教程,包括node.js、web3.js、solidity、geth、turffle都会涉及到,应该有帮助:
以太坊DApp入门实战教程
⑼ 以太坊web3.sendRawTransaction离线签名交易
工作中需要复现短地址攻击和the重入攻击,重入攻击可以直接通过eth.sendTransaction和remix来发送交易,但是短地址攻击由于钱包和remix这些都对input做了长度检测,无法通过这些方式来复现,只能通过发离线签名交易来实现。
1.环境依赖:nodejs , keythereum , ethereumjs-common , ethereumjs-tx 。
2.进入Node控制台,获取相应账户私钥。
3.签名交易,进入Node,这里注意nonce问题,需要Nonce是实际可执行的nonce,Nonce不对会发送交易失败,关于如何获取input data网络比较多就不详述了。
4.遇到的坑,网络出来的步骤是有问题的或者过时了,当时是参考的这篇文章, https://www.freebuf.com/articles/blockchain-articles/199903.html
,在控制台通过eth.sendRawTransaction发送签名好的交易,我遇到了这个错误 ** sendRawTransaction invalid sender **
⑽ 以太坊中的国际银行账号iban
简单地说,以太坊中的iban账号是以太坊为了和传统的银行系统对接而引入的概念,web3.js中提供了以太坊地址和iban地址之间的转换方法。
iban这个概念源于传统的银行系统,其英文全称为 International Bank Account Number ,即国际银行帐号。iban的作用是为全球任意一家银行中的任意一个账户生成一个全球唯一的账号,以便进行跨行交易。一个iban账号看起来像这样:
iban地址最多可以包含34个字母和数字,其中的字母大小写不敏感。在iban
中包含以下信息:
以太坊引入了一个新的IBAN国别码:XE,其中E代表Ethereum,X代表非法币(non-jurisdictional currencies)。同时,以太坊提出了三种BBAN的编码格式:direct、basic和indirect。
direct编码方案中的BBAN为30个字母/数字,只有一个字段:账户编号。例如,以太坊地址 转换为direct方案的BBAN账号,就得到 。
可以使用web3.js中的 web3.eth.Iban.fromEthereumAddress()
方法来执行这一转换:
basic编码方案与direct方案的唯一区别在于,其BBAN长度为31个字母/数字,因此该方案不兼容IBAN。
indrect编码方案中的BBAN长度为16个字母/数字,包含三个字段:
例如,一个采用indrect编码方案的以太坊iban账号,看起来是这样:
前面的 XE 表示国别码, 81 为校验和,后面的16个字符就是indrect编码的BBAN,其中:
如前所述,使用 web3.eth.Iban.fromEthereumAddress() 方法,可以将一个以太坊地址转换为direct编码方案的iban账号。与之对应的,可以使用 web3.eth.Iban.toAddress 方法,将一个采用direct编码方案的iban账号,转换回以太坊地址。例如:
iban账号中的校验和用来帮助核验一个给定字符串是否为有效的iban账号。可以使用web3.js中的 web3.eth.Iban.isValid()
来进行执行校验。例如:
原文: http://blog.hubwiz.com/2018/06/03/ethereum-iban/