<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[飞久]]></title><description><![CDATA[在技术的世界里飞久了，停下来，泡一杯咖啡，记录自己的点滴心得]]></description><link>https://blog.youkuaiyun.com/TurkeyCock</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TurkeyCock]]></copyright><item><title><![CDATA[如何发布Azure web app]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/99816735</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/99816735</guid><author>TurkeyCock</author><pubDate>Tue, 20 Aug 2019 09:11:56 +0800</pubDate><description><![CDATA[最近一个项目要集成到Azure的web app service里，花了点时间玩了一下，记录下来做个备忘。
首先是需要去Azure官网注册免费账户，点击“免费开始”然后填写个人信息，注意需要绑定信用卡，否则没法部署web app。比较坑爹的一点是，虽然名为“Free Trial”，绑完卡后立马扣了我1美金。。。
注册完成后会获得一个“订阅号”，后面部署web app需要使用这个订阅号。进入下面这个页...]]></description><category></category></item><item><title><![CDATA[从geth切换到parity遇到的那些坑]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/99816445</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/99816445</guid><author>TurkeyCock</author><pubDate>Tue, 20 Aug 2019 08:51:18 +0800</pubDate><description><![CDATA[最近需要搭建以太坊全节点，刚开始用的是geth，同步了1整天发现最新的70～80个块总是同步不下来，网上一查很多人遇到过这个问题，据说跟SSD的读写速度有关，无奈之下只能放弃，改用parity。
parity是一个和geth类似的以太坊客户端程序，由以太坊黄皮书作者Gavin Woods领导，采用Rust语言编写。试用了一下体验还是挺棒的，同步Ropsten的数据只需要几个小时的时间。但是，par...]]></description><category></category></item><item><title><![CDATA[Zcash - 各种密钥和签名，你懂吗？]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/97571552</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/97571552</guid><author>TurkeyCock</author><pubDate>Sat, 27 Jul 2019 23:32:42 +0800</pubDate><description><![CDATA[Zcash的发展大体经过了OverWinter(过冬) -&gt; Sprout(发芽) -&gt; Sapling(树苗)这几个阶段，随着业务和功能的逐渐丰富，密钥系统也越来越复杂，刚开始接触时感觉一头雾水，但是静下心来仔细分析，就能逐渐领略其中的魅力。
Zcash中的各种密钥，主要是为了实现下面2类功能：
1.Signature
2.In-band secret distribution
签名...]]></description><category></category></item><item><title><![CDATA[Zcash - 深入浅出Pedersen Hash/Commitment计算]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/97569082</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/97569082</guid><author>TurkeyCock</author><pubDate>Sat, 27 Jul 2019 23:18:22 +0800</pubDate><description><![CDATA[接触过Zcash的人一定都听说过Pedersen Hash，或者Pedersen Commitment。实际上，在Zcash中存在下面4种不同的概念：
1.Pedersen Hash
2.Mixing Pedersen Hash
3.Windowed Pedersen Commitment
4.Homomorphic Pedersen Commitment
你能分清楚它们直接的区别和联系吗？本文将...]]></description><category></category></item><item><title><![CDATA[零知识证明|4.如何验证多项式盲计算的值？]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365780</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365780</guid><author>TurkeyCock</author><pubDate>Mon, 10 Jun 2019 11:29:35 +0800</pubDate><description><![CDATA[这篇文章正式介绍一下Bob如何验证Alice发过来的E(P(s))E(P(s))E(P(s))的值是否正确。实际上，我们想要实现2个目的：

双盲：Alice不知道s，Bob也不知道P(X)
可验证：Alice只有发送正确的E(P(s))E(P(s))E(P(s))的值，才会被Bob接受

要实现第2个目标，需要用到上一篇文章里介绍的α对和KCA的概念。
上一篇文章里的KCA只用到了一个α对，我们...]]></description><category></category></item><item><title><![CDATA[零知识证明|3.什么是KCA系数知识假设？]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365601</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365601</guid><author>TurkeyCock</author><pubDate>Mon, 10 Jun 2019 11:26:28 +0800</pubDate><description><![CDATA[上一篇介绍了盲计算，所谓盲计算，就是Alice在不知道s的情况下完成多项式计算。
那么，Bob如何确定Alice的计算结果是正确的呢？要实现这一目标，需要先介绍一个概念：α对。
在有限循环群G中，如果α,β≠0且b=α⋅a\alpha, \beta \neq 0 且 b = \alpha \cdot aα,β̸​=0且b=α⋅a，那么就称(a,b)(a,b)(a,b)为一个α对。
也就是说，b是a...]]></description><category></category></item><item><title><![CDATA[零知识证明|2.什么是多项式盲计算？]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365459</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365459</guid><author>TurkeyCock</author><pubDate>Mon, 10 Jun 2019 11:23:52 +0800</pubDate><description><![CDATA[上一篇介绍了什么是同态隐藏。假设取E(x)=gxE(x) = g^xE(x)=gx，则E(x+y)E(x+y)E(x+y)可以通过E(x)E(x)E(x)和E(y)E(y)E(y)计算出来：
E(x+y)=E(x)⋅E(y)E(x+y) = E(x) \cdot E(y)E(x+y)=E(x)⋅E(y)
实际上，不仅仅支持加法，支持所有"线性组合"的同态隐藏，比如E(ax+by)E(ax + by...]]></description><category></category></item><item><title><![CDATA[零知识证明|1.什么是同态隐藏？]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365155</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/91365155</guid><author>TurkeyCock</author><pubDate>Mon, 10 Jun 2019 11:18:43 +0800</pubDate><description><![CDATA[所谓零知识证明，指的是在不泄露秘密的前提下，证明我知道这个秘密。
举个简单例子，假设我一个月工资2000，我老婆一个月工资3000。我不会把这两个数字透露给你，但是我可以告诉你，我俩每个月的工资加起来是5000。你可以通过某种方式验证我俩的工资加起来确实是5000，但是你没办法反推出来我每个月的工资是多少，我老婆每个月工资是多少。
要做到这一点，需要引入一个概念，叫做同态隐藏。这需要一些数论的知识...]]></description><category></category></item><item><title><![CDATA[以太坊控制台源码分析]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/89295196</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/89295196</guid><author>TurkeyCock</author><pubDate>Sun, 14 Apr 2019 12:51:52 +0800</pubDate><description><![CDATA[最近有网友提到以太坊控制台的代码看不太明白，抽了点时间整理了一下。
当我们通过geth console或者geth attach与节点交互的时候，输入的命令是如何被处理的呢？看下面这张流程图就明白了：


命令行编辑器Liner等待用户输入命令
JSRE使用一个名为scheduler的通道（chan）接收命令
JSRE把命令发送给Javascript解释器Otto处理
Otto中预加载了web3....]]></description><category></category></item><item><title><![CDATA[前端技术栈(五)：dva，美貌与智慧并存]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88427158</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88427158</guid><author>TurkeyCock</author><pubDate>Tue, 12 Mar 2019 19:20:54 +0800</pubDate><description><![CDATA[经过前面四篇的铺垫，终于轮到我们的主角dva了，就是下面这个美女：

先擦一擦哈喇子，我们来介绍一下，dva出自于暴雪出品的一款游戏《守望先锋》，援引官方的角色介绍：

D.Va拥有一部强大的机甲，它具有两台全自动的近距离聚变机炮、可以使机甲飞跃敌人或障碍物的推进器、 还有可以抵御来自正面的远程攻击的防御矩阵。

然后呢，蚂蚁金服的一位架构师sorrycc很迷这位美女，正巧刚开发了一款前端框架没有...]]></description><category></category></item><item><title><![CDATA[前端技术栈(四)：react-router，去中心化式路由]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88413376</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88413376</guid><author>TurkeyCock</author><pubDate>Tue, 12 Mar 2019 08:40:34 +0800</pubDate><description><![CDATA[1.静态路由 vs. 动态路由
在Web前端开发中，我们经常会需要处理页面路由问题。习惯上，路由信息会在一个地方集中配置好，我们可以称之为“静态路由”，或者叫“中心化式路由”。以react-router v3版本为例，代码类似下面这样：
import { Router, Route, IndexRoute, browserHistory } from 'react-router'

const A...]]></description><category></category></item><item><title><![CDATA[前端技术栈(三)：redux-saga，化异步为同步]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88390208</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88390208</guid><author>TurkeyCock</author><pubDate>Mon, 11 Mar 2019 11:10:05 +0800</pubDate><description><![CDATA[1.什么是Saga？
第一次看到这个单词的时候一脸懵逼，因为字典上查到的意思完全驴头不对马嘴。。。
实际上，这个术语出自康奈尔大学的一篇论文：http://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf
最初这篇论文是为了解决分布式系统中的LLT（Long Lived Transaction），也就是长时运行事务的数据一致性问题的。这...]]></description><category></category></item><item><title><![CDATA[前端技术栈(二)：从Flux到Redux]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88373541</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88373541</guid><author>TurkeyCock</author><pubDate>Sun, 10 Mar 2019 00:05:38 +0800</pubDate><description><![CDATA[上一篇分析了Flux出现的背景和原理，最核心的思想就是“组件化+单向数据流”。
但是，Flux在设计上并非完美，具体来说主要存在以下2个不足：
1. 多Store数据依赖
由于Flux采用多Store设计，各个Store之间可能存在数据依赖。以flux-chat为例：在这个聊天软件里，可能会有多个人给你发消息，比如Dave给你发了3条，Brian给你发了2条，当你点开某个人给你发的消息后，界面需要...]]></description><category></category></item><item><title><![CDATA[前端技术栈(一)：从MV*到Flux]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88373485</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88373485</guid><author>TurkeyCock</author><pubDate>Sun, 10 Mar 2019 00:00:56 +0800</pubDate><description><![CDATA[最近要开始搞网页端钱包，本着干一行爱一行的原则，撸起了前端框架。
项目基于蚂蚁金服的dva框架，实际上是对几个流行的开源框架的整合，技术栈包括：

react
react-router
redux
redux-saga
dva
antd

在开始介绍之前，先说一说MV*。大家一定都听说过MVC，在这之后又衍生出了MVP和MVVM，这些都可以统称为MV*。但是，随着前端代码复杂度的增加，人们发现越来...]]></description><category></category></item><item><title><![CDATA[区块链技术分享导读目录(持续更新)]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/88365146</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/88365146</guid><author>TurkeyCock</author><pubDate>Sat, 09 Mar 2019 13:42:56 +0800</pubDate><description><![CDATA[还记得第一次接触到以太坊源码时，就被它作为“世界计算机”的宏伟构想深深吸引。实际上，可以认为以太坊是在试图屏蔽底层硬件的差异，制定统一的虚拟指令集，并利用去中心化维护整个系统的稳定性。此外，还可以把以太坊看成一个去中心化的App Store，任何人都可以自由发布自己的app而不用担心各种监管和下架，而且最重要的是，永不宕机。
随着在区块链行业研究的深入，越来越感觉到知识的纷繁庞杂，于是决定把这些学...]]></description><category></category></item><item><title><![CDATA[一分钟了解硬件钱包]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/86755326</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/86755326</guid><author>TurkeyCock</author><pubDate>Sat, 02 Feb 2019 23:03:56 +0800</pubDate><description><![CDATA[所谓硬件钱包，就是把你的私钥保存在一个不联网的设备上。因为不联网，所以其他人永远都无法窃取你的私钥。
硬件钱包品牌繁多，比如长得像车钥匙的Trezor：

长得像U盘的Ledger Nano：

长得像手机的Ellipal：

甚至还有长得像信用卡的：

那么硬件钱包怎么用呢？以Trezor为例，首先会要求你设置一个PIN码，类似于你的手机密码：

然后就是创建你的私钥了，创建完以后会显示助记词：...]]></description><category></category></item><item><title><![CDATA[Go编译缓存导致C文件修改后未重新编译]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/86739810</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/86739810</guid><author>TurkeyCock</author><pubDate>Fri, 01 Feb 2019 13:48:05 +0800</pubDate><description><![CDATA[今天和同事一起看了一个很诡异的问题，研究了半天发现是由于Go的编译缓存导致的，记录下来方便其他遇到问题的同学参考。
首先编写一个hello.go文件，里面调用了C函数：
package main

/*
#include &quot;./libhello.c&quot;
*/
import &quot;C&quot;
import &quot;fmt&quot;

func main() {
    fmt.Println(C.hello())
}

对应...]]></description><category></category></item><item><title><![CDATA[分片：QuarkChain技术原理分析]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/86558882</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/86558882</guid><author>TurkeyCock</author><pubDate>Sun, 20 Jan 2019 02:03:38 +0800</pubDate><description><![CDATA[最近听说QuarkChain在韩国热度比较高，于是抽了点时间研究了一下。
QuarkChain是一种“sharding-based blockchain”，即基于分片的区块链。它的主要目标是提高区块链的可扩展性（即TPS），同时还要兼顾不可能三角（安全性、去中心化性、可扩展性）。主要竞争对手：

以太坊分片：由于历史包袱比较重，实际应用时间不确定
OmniLeger：安全性有所妥协，如果要达到10...]]></description><category></category></item><item><title><![CDATA[Android上运行Http Server]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/86555919</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/86555919</guid><author>TurkeyCock</author><pubDate>Sat, 19 Jan 2019 19:33:36 +0800</pubDate><description><![CDATA[Android设备一般是作为客户端使用，但是最近一个项目需要用android开发板作为服务器和手机端通信，因此花了点时间研究了下如何在android上运行http server。
实际上这是有开源解决方案的，叫做AndroidAsync，作者是Koushik Dutta，他的另一个开源项目是大名鼎鼎的ION，这是一个异步网络图片加载库。但是AndroidAsync几乎没什么文档，因此实际使用中遇到...]]></description><category></category></item><item><title><![CDATA[以太坊君士坦丁堡漏洞分析]]></title><link>https://blog.youkuaiyun.com/TurkeyCock/article/details/86547899</link><guid>https://blog.youkuaiyun.com/TurkeyCock/article/details/86547899</guid><author>TurkeyCock</author><pubDate>Fri, 18 Jan 2019 23:26:45 +0800</pubDate><description><![CDATA[这两天关于以太坊延迟君士坦丁堡升级的报导铺天盖地，可惜到现在都没看到一篇能把这个漏洞讲透彻的，就由我来给大家解密吧。
上一篇文章给大家介绍过EIP 1283，是为了优化SSTORE指令的gas计算方式的，这次的漏洞就出在这个EIP上，可能会导致“重入攻击”。
1.什么是“重入攻击”
所谓“重入攻击”，指的是在同一笔交易中，合约A调用合约B，而合约B又反过来调用合约A的现象。
这种情况是必须被禁止的...]]></description><category></category></item></channel></rss>