[Contract] 一次搞懂 ETH Gas, GasPrice, GasLimit 之间关系与使用

摘要: Gas 是一个交易费的基本单位(unit),类似汽油的单位“升”,比如一次链上交易可能消耗 5 Gas 汽油,由运行的程序决定。 GasPrice 是一个 Gas 的单价,一般用 Gwei 来形象表示 ( 但注意实际在应用程序中都是使用 Wei ),GasPrice 由用户自己设置,其大小会决定交易 阅读全文
posted @ 2020-03-20 00:03 ercom 阅读(4788) 评论(0) 推荐(0) 编辑

[Blockchain] 以太坊主流测试网 ropsten 和 kovan 的区别 以及 如何选择

摘要: ropsten 采用 POW (Proof-of-Work)共识机制,挖矿难度系数非常低,容易被攻击,不够低碳环保。 kovan 采用 POA (Proof-of-Authority)共识机制,不需要挖矿,由开发人员主动申请、权威节点生成ETH,低碳环保。 所以想要完全自助的,获取 ropsten 阅读全文
posted @ 2020-03-19 15:43 ercom 阅读(2771) 评论(0) 推荐(0) 编辑

[Blockchain] 前后端完全去中心化的思路, IPFS 与 Ethereum Contract

摘要: 我们在使用智能合约的时候,一般是把它当成去中心、减少信任依赖的后端存在。 如果没有特殊后端功能要求,一个 DApp 只需要前端驱动 web3js 就可以实现了。 可以看到,现在前端部分依旧是一个中心化的客户端。 完全去中心化的思路是把整个前端 dist 上传到 ipfs 获取项目的 hash 访问路 阅读全文
posted @ 2020-03-19 13:55 ercom 阅读(429) 评论(0) 推荐(0) 编辑

[Cryptocurrency] rDAI 与 DAI 的区别, 如何质押 rDAI 获取利息

摘要: 以下合约操作需要在安装 MetaMask ( 以太坊的浏览器钱包 ) 的情况下进行。 rDAI 通过和 DAI 1 : 1 互换得到,在 rDAI 提供的 dapp 上面操作 https://app.rdai.money 选择 CREATE 标签,第一步加好“收益”收取地址池(一个就可以),第二步质 阅读全文
posted @ 2020-03-18 18:39 ercom 阅读(445) 评论(0) 推荐(0) 编辑

[Contract] ETH 与 Gas 之间的价格转换关系, Ethereum Gas Price Chart

摘要: 以太坊网络每天的平均气价(Gas)是变化,有一张价格表:https://etherscan.io/chart/gasprice 然后你可以知道 1 Gas = xx Gwei,再换算一下 1 ETH = xx Gas 即可。 另外你需要 搞懂 ETH Gas, GasPrice, GasLimit 阅读全文
posted @ 2020-03-14 09:11 ercom 阅读(2111) 评论(0) 推荐(0) 编辑

[Contract] Solidity 合约发布到测试网 ropsten 的作用

摘要: 当我们本地完成了一系列测试以后,接下来就是准备上线了。 关于合约部署可以参考这篇:Solidity 合约使用 truffle 部署到测试网和主网 你可能有一个疑问,在上主网之前,先上测试网的作用是什么呢? 理由是,我们可以通过 MetaMask 切换到 ropsten 网络,进行 Dapp 上的常规 阅读全文
posted @ 2020-03-14 07:07 ercom 阅读(617) 评论(0) 推荐(0) 编辑

[Contract] Solidity 合约使用 truffle 部署到测试网和主网

摘要: 使用 truffle 发布到非本地的以太坊主网或者测试网时,需要提供钱包的助记词或私钥。 首先安装 truffle 组件:npm install @truffle/hdwallet-provider 注册 https://infura.io,得到 project id 和 key,使用其 api 连 阅读全文
posted @ 2020-03-13 19:22 ercom 阅读(1658) 评论(0) 推荐(0) 编辑

[FAQ] Solidity 合约销毁 ?

摘要: 仅创建者可以销毁合约的示例: address public owner; // When deploy contract constructor() public { owner = msg.sender; } function destroyContract() external onlyOwne 阅读全文
posted @ 2020-03-10 16:23 ercom 阅读(895) 评论(0) 推荐(0) 编辑

[PHP] 几个拖慢 PHP 程序/API 运行速度的点

摘要: 1. 启动、查找 Session 需要一定开销,默认 session.save_handler=files,可以通过修改为 redis 提速。 files 的 session 会阻塞请求?https://log.zvz.im/2016/02/27/PHP-session/ 某些接口业务可能不需要开启 阅读全文
posted @ 2020-03-10 15:48 ercom 阅读(566) 评论(0) 推荐(0) 编辑

[FAQ] MetaMask ALERT: 交易出错. 合约代码执行异常.

摘要: 首先确认载入的合约地址是否是最新的,比如 web3 载入的 abi 格式的 json 文件名 正不正确。 其次需要检查合约逻辑是否都正确,以及是否是合约抛出的错误,这两点最好是通过写测试用例来保证。 最后看调用方是否传参有问题,包括调用合约时传递的任何一个选项,比如 from, value, dat 阅读全文
posted @ 2020-03-10 00:49 ercom 阅读(4425) 评论(0) 推荐(0) 编辑

[PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

摘要: auth:api 最先出来,提供了最简单和最实用的方式进行 api 身份校验。 关于它的含义和用法你可以参考以下两篇: 浅谈 Laravel Authentication 的 auth:api 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别 passpor 阅读全文
posted @ 2020-03-09 14:09 ercom 阅读(1441) 评论(0) 推荐(0) 编辑

[Contract] 测试 Solidity 合约代码的两种方式 与 优缺点

摘要: 第一种,使用 Truffle 这类继承了测试工具的框架,只要编写 js 脚本就可以测试 web3 与合约的逻辑。 优点是完全可控,粒度够细,便于集成测试;缺点是需要花费一些时间编写测试脚本,不过值得。 第二种,使用 Remix 提供的图形化方法调用,可以快速验证方法返回值的正确性,方便了调试。 只需 阅读全文
posted @ 2020-03-09 00:29 ercom 阅读(698) 评论(0) 推荐(0) 编辑

[FAQ] JS 实现暂停(睡眠) Sleep 与 倒计时 ?

摘要: 想要暂停/睡眠一秒,可以参考使用以下方式: async () => { await (new Promise((resolve) => setTimeout(resolve, 1000))) } 如果是倒计时,那么只需要把 sleep 可以放在 while 循环里,满足指定条件后再 break 退出 阅读全文
posted @ 2020-03-08 21:23 ercom 阅读(1093) 评论(0) 推荐(0) 编辑

[FAQ] Solidity 实现倒计时 (count down) ?

摘要: 思路:一种方式是使用 ethereum-alarm-clock,另一种是合约实现当前过去了多少时间,外部进行不间断调用获得。 Any else? Refer:Solidity能倒计时吗 Link:https://www.cnblogs.com/farwish/p/12424187.html 阅读全文
posted @ 2020-03-08 21:18 ercom 阅读(1015) 评论(0) 推荐(0) 编辑

[FAQ] web3js, Error: [number-to-bn] while converting number 0.1 to BN.js instance, error: invalid number value

摘要: 我们在调用合约方法时,都可以传一些参数的,比如转账金额 value。 value 的单位是 wei,这是一个很小的单位,所以一般数值很大。 如果误把 ether 当成 wei 传参,就会报标题中的错误。 注意,把 ether 转 wei 需要先把 ether 的值转成字符串。 比如 0.1 ethe 阅读全文
posted @ 2020-03-06 00:26 ercom 阅读(1385) 评论(0) 推荐(0) 编辑

[FAQ] web3js, Error: Please pass numbers as strings or BN objects to avoid precision errors.

摘要: 我们在调用合约方法时,都可以传一些参数的,比如转账金额 value。 value 的单位是 wei,这是一个很小的单位,所以一般数值很大。 注意,把 ether 转 wei 需要先把 ether 的值转成字符串,不然就会报出标题中的错误。 比如 0.1 ether 转 wei 使用 web3.uti 阅读全文
posted @ 2020-03-06 00:18 ercom 阅读(2080) 评论(0) 推荐(0) 编辑

[Contract] 监听 MetaMask 网络变化, 账号切换

摘要: 为什么需要监听网络变化?目前在 MetaMask 中切换网络,网页会自动刷新,但是这一特性后面将停止使用。 MetaMask: MetaMask will soon stop reloading pages on network change. If you rely upon this behav 阅读全文
posted @ 2020-03-03 20:24 ercom 阅读(2968) 评论(0) 推荐(0) 编辑

[Contract] web3.eth.getAccounts, web3.eth.getCoinbase 使用场景区别

摘要: web3.eth.getAccounts() 返回节点控制的账号列表(Promise returns Array) web3.eth.getCoinbase() 返回挖矿奖励所归集的地址(Promise returns String) 根据字面意思很难知道 两个函数 分别用在哪块,下面给出具体解释: 阅读全文
posted @ 2020-03-02 00:46 ercom 阅读(904) 评论(0) 推荐(0) 编辑

[PHP] 浅谈 Laravel Authorization 的 gates 与 policies

摘要: 首先要区分 Authentication 与 Authorization,认证和授权,粗细有别。 授权(Authorization) 有两种主要方式,Gates 和 Policies。 Gates 和 Policies 的定义可以类比 Routes 和 Controllers: Gates 通过 回 阅读全文
posted @ 2020-02-29 18:40 ercom 阅读(370) 评论(0) 推荐(0) 编辑

[FAQ] Smart Contract: xxx has not been deployed to detected network (network/artifact mismatch)

摘要: 在前端用 web3 与 contract 交互时,需要获取到已部署的 contract 实例进行操作,如果没有获取到就会报此错。 比如如下的 .deployed() 阶段: /* 伪代码 */ const contractJson = contract(pokerJson) contractJson 阅读全文
posted @ 2020-02-28 21:04 ercom 阅读(1419) 评论(0) 推荐(0) 编辑

[Contract] Solidity address payable 转换与数组地址

摘要: address payable --> address address payable addr1 = msg.sender; address addr2 = addr1; // 隐式转 address addr3 = address(addr1); // 显式转 address --> addre 阅读全文
posted @ 2020-02-27 21:14 ercom 阅读(1367) 评论(0) 推荐(0) 编辑

[Contract] Solidity 变量类型的默认值

摘要: 变量的默认值一般都代表 “零值”。 比如 bool 就是 false,uint、int 就是 0,string 就是空字符串。 其它组合的参考 Solidity 判断 mapping 值的存在 Refer:Solidity所有变量类型 Ref:https://solidity.readthedocs 阅读全文
posted @ 2020-02-26 16:32 ercom 阅读(1052) 评论(0) 推荐(0) 编辑

[Contract] Solidity 遍历 mapping 的一种方式

摘要: 思路:为需要遍历的 mapping 再准备一个 list,之后通过 for 循环遍历 list 取得 mapping 的 key。 mapping (address => uint) usersValue mapping (uint => address) list uint length = xx 阅读全文
posted @ 2020-02-25 22:26 ercom 阅读(4427) 评论(0) 推荐(0) 编辑

[Contract] Solidity 判断 mapping 值的存在

摘要: 比如 mapping(address => uint) tester,只需要判断 mapping 是否为默认值 0, tester[msg.sender] == 0 "You can think of mappings as hash tables, which are virtually init 阅读全文
posted @ 2020-02-25 17:09 ercom 阅读(1728) 评论(0) 推荐(0) 编辑

[Contract] public、external, private、internal 在 Solidity 中如何选择

摘要: 合约内部访问的用 private,修饰内部变量时选择、通过 external 函数返回。 合约内部、外部均可访问的用 public。 仅在合约外部访问的用 external,明确暴露给前端使用时选择。 internal 类似 protected,可访问父合约的 internal 方法。 Refer: 阅读全文
posted @ 2020-02-25 15:17 ercom 阅读(709) 评论(0) 推荐(0) 编辑

[FAQ] Member "address" not found or not visible after argument-dependent lookup in address payable.

摘要: 顾名思义,address 属性不存在,请检查调用方。 比如:msg.sender.address 会有此提示,在 Solidity Contract 中,msg.sender.balance 是存在的,msg.sender 表示调用合约的人地址 Refer:智能合约中可支付的地址 Link:http 阅读全文
posted @ 2020-02-24 17:37 ercom 阅读(918) 评论(0) 推荐(0) 编辑

[Contract] Truffle 使用流程

摘要: Installation $ npm install -g truffle Choose ethereum client (Ganache OR truffle build in `truffle develop`) https://www.trufflesuite.com/docs/truffle 阅读全文
posted @ 2020-02-18 14:11 ercom 阅读(429) 评论(0) 推荐(0) 编辑

Why all application lack a kind of most really charm ?

摘要: Website and APP we used now are mostly web2.0 applications. While people practise in use, they can not make sure the data is accurate and safe. Why we 阅读全文
posted @ 2020-02-16 22:40 ercom 阅读(186) 评论(0) 推荐(0) 编辑

[公链观点] BTC 1.0, ETH 2.0, EOS 3.0, Dapp, WASM, DOT, ADA, VNT

摘要: Dapp 发展史 WASM 兼容Web的编码方式 Cardano(ADA 艾达币) 权益挖矿 VNT chain 解决联盟链和公链的跨链基础项目 跨链项目 Polkadot (DOT 波卡币) 是不是互联网基石? Polkadot 官网 DOT Token FAQ 采用POS机制, 由创世块出现后可 阅读全文
posted @ 2020-01-29 20:54 ercom 阅读(387) 评论(0) 推荐(0) 编辑

[FAQ] chrome.runtime.onMessage 问题, Unchecked runtime.lastError: The message port closed before a response was received

摘要: // quasar background-hook.js chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { if (request.accessToken !== '') { chrome. 阅读全文
posted @ 2020-01-27 17:45 ercom 阅读(693) 评论(0) 推荐(0) 编辑

[FAQ] Composer, Content-Length mismatch

摘要: 1. $ composer config repos.packagist composer https://php.cnpkg.org$ composer config cache-files-maxsize 2048MiB 其它镜像源 https://packagist.mirrors.sjtug 阅读全文
posted @ 2020-01-25 23:12 ercom 阅读(573) 评论(0) 推荐(0) 编辑

[PHP] Laravel 依赖注入使用不当引起的内存溢出

摘要: 业务逻辑: 正常在 controller 方法的参数中注入某个类,方法中使用这个类时发生内存超出提示。 分析: 过往显示,正常使用依赖注入是不存在问题的,那么很有可能是哪里发生了循环引用,导致一直请求某个操作而消耗内存。 排查: 业务逻辑没有任何问题。 在定义路由时,该路由指定了某个中间件,需要排查 阅读全文
posted @ 2020-01-25 15:51 ercom 阅读(1448) 评论(0) 推荐(0) 编辑

[PHP] 浅谈 Laravel auth:api 不同驱动 token 和 passport 的区别

摘要: token 驱动使用 TokenGuard 用传递的值去用户表中查询 member_token 字段的值,看是否有匹配的。 服务端需要在用户表 member_token 字段中存储 access_token。 默认是永久存储,未提供设置过期时间的机制。 passport 驱动是 laravel/pa 阅读全文
posted @ 2020-01-21 21:34 ercom 阅读(1566) 评论(0) 推荐(0) 编辑

[PHP] 自定义 laravel/passport 的误区讲解

摘要: Passport 的 Client 模型对应用户是默认的 User 模型、使用的 guards 是 api。 如果你发现自定义 passport 时总是调试不成功,那么很有可能是以下原因。 /** * Get the user that the client belongs to. * * @ret 阅读全文
posted @ 2020-01-21 16:58 ercom 阅读(1078) 评论(0) 推荐(0) 编辑

[Tools] Kali Linux 高清屏扩大系统字体、BurpSuite、OpenVAS

摘要: 系统检索 Setting Manager,Appearance -> Settings,选择 Window Scaling:2x Terminal fonts: linux terminal 快捷键与 item2 的区别: item2 的轴心键是 command,linux terminal 的是 阅读全文
posted @ 2020-01-11 08:30 ercom 阅读(1096) 评论(0) 推荐(0) 编辑

[NoSQL] 从模型关系看 Mongodb 的选择理由

摘要: 往期:Mongodb攻略 回顾 Mongodb 与关系型数据库的对应关系: MySQL MongoDB database(数据库) database(数据库) table(表) collection(集合) rows(记录) document(文档对象) 建模时的决定直接影响到应用程序的性能和数据的 阅读全文
posted @ 2020-01-05 18:30 ercom 阅读(398) 评论(0) 推荐(0) 编辑

[quacker] Browser Extension to Clean Website ADs in Quasar BEX

摘要: youdao.com result page Before: After: youtube.com index page Before: After: Later we will add more and more. Or you can submit issues to me on blog/gi 阅读全文
posted @ 2020-01-04 13:50 ercom 阅读(381) 评论(0) 推荐(0) 编辑

[FE] Quasar BEX 预览版指南

摘要: BEX(Browser Extension)是 Quasar 基于同一套代码允许编译成浏览器扩展来运行,支持 Firefox & Chrome。 截止目前(2019/12/25), bex 模式的代码并未合并到 Master,虽然之前社区消息发布说已经包含在 @quasar-1.2.0 中,实际主分 阅读全文
posted @ 2019-12-25 15:46 ercom 阅读(866) 评论(0) 推荐(0) 编辑

[FE] Chrome Extension 五步曲

摘要: 1. Create the manifest.jsonOnly three fields is needed. { "name": "Getting Started Example", "version": "1.0", "manifest_version": 2, "description": " 阅读全文
posted @ 2019-12-24 20:09 ercom 阅读(473) 评论(0) 推荐(0) 编辑

使用 Nginx 阻止恶意 IP 访问

摘要: 找到具有明显特征的访问记录,比如: 156.203.12.198 -[01/Dec/2019:17:40:34 +0800] "GET /index.php?s=/index/\x09hink\x07pp/invokefunction&function=call_user_func_array&va 阅读全文
posted @ 2019-12-22 18:59 ercom 阅读(3669) 评论(0) 推荐(0) 编辑