谁是IPFS中国区“奶王”?IPFS.FUND周欢当仁不让

 

香港影坛有两大传说:

 

——“刘十四”、“古十二”。

 

说的是两大劳模的拍片记录。

 

刘德华,最高峰一年拍14部电影。

 

古天乐,仅今年就12部排着队上映。

 

谁才是香港第一“劳模”,至今没有定论。

 

 

但在今年大热的区块链领域、分布式存储这个赛道。

 

有一个名字,频繁出现。

 

我在北京活动现场看他在台上侃侃而谈。

 

隔天在上海活动现场又看见同副景象。

 

转头到了深圳,他怎么又在。

 

——他就是周欢。

 

 

2019年的短短半年。

 

周欢跑了十几个城市做分布式存储的布道。

 

办了五场meet up。

 

接受了十余家媒体的专访和直播互动。

 

出席各大峰会论坛……

 

 

“今年比去年过得更忙碌了,虽然市场渐渐成熟,用户获知相关知识的渠道也多了。但市场特有的波澜诡谲,一年比一年甚。”

 

周欢说。

 

是的,过去的2018年,周欢的工作量基本是我刚才提到的3倍。

 

“分布式存储第一劳模”、“IPFS第一奶王”。

 

实至名归。

 

 

周欢的布道,

 

很少中规中矩,圆润柔滑。

 

他何人都敢讲,何事都敢说。

 

说IPFS官方团队协议实验室有“原罪”,在市场营销上无作为。

 

说国内那么多存储公链都是在“捡漏”,山中无虎猴子称霸。

 

言语之大胆,措辞之犀利,在圈子里确实少见。

 

我们见多了千篇一律、流于表面的演讲,

 

剑走偏锋的类型,反而是眼前一亮。

 

 

不得不说,做布道者,有时候就是需要一点点反骨和傲骨。

 

什么是反骨?

 

说白了,就是真的热爱,真的投入,以及真的坚持。

 

真的希望圈子远离泥沙,荡涤污糟。

 

什么是傲骨,就是此身分明、不同流合污。

 

这种反骨以及傲骨,

 

其实就是我们常常说的,情怀。

 

 

这年头,情怀已经被玩坏了。

 

但我们依然相信,机遇、能力是99%,

 

唯独情怀,是你的所作、所为超出别人关键的1%。

 

它骗不了人。

 

周欢做到了。

 

 

今年,周欢身上的担子更重了,

 

经过两年多的打磨,

 

他用一言一行、一举一动证明了自己,

 

于是,一个新锐基金由此应运而生,但也并不局限于分布式存储赛道。

 

周欢的角色有了新变化。

 

 

变数,是一个创业者创业生涯里最不可控的因素。

 

变好了,是突破。

 

变错了,一步错步步错。

 

周欢变得愈发沉稳,三思而后行、谋定而后动。

 

 

我问他,

 

“怕输吗?”

 

他不置可否,

 

“成功和失败就像币价一样不可预测,赢了就是标杆,输了就是垫脚石,一个新生事物的发展,需要标杆的引领,也需要垫脚石的警示。我会成为哪一种,只能是尽人事听天命。”

 

身心明,羽毛亮。

 

 

台上,周欢寄情并茂,从商业逻辑、技术原理,讲到挖矿投资。

 

然而,现场依然有人直言并不关心IPFS和Filecoin的技术以及原理。

 

“我只想知道Filecoin什么时候上线,大概价格是多少?挖矿能不能赚钱?”

 

“价格不可预测,不可预知因素实在太多。以价格预测来宣传项目,其实是一种不负责任。”周欢说。

 

 

让我意外的是,像IPFS和Filecoin这样一个难得优秀的项目,在口碑上,也有不少杂音。

 

主流意见是:进展太慢、团队不做事。

 

 

这才是我忧心的。

 

 

是不是看多了浮夸抄袭,快速圈钱,经不起推敲的区块链项目,

 

现在的用户,连“沉浸”一个好项目的耐心都丧失了?

 

深耕细作被说成效率太低。

 

精益求精被说成进展太慢。

 

进而,转身,他们投入了各类拉人头游戏、中心化派币的“伪挖矿”里。

 

 

投机取巧、急功近利、涸泽而渔。

 

我们是不是该反思一下自己。

 

对好项目的每一次转身,都是对认真专业的辱没。

 

对烂项目的每一次追捧,都是对投机钻营的鼓励。

 

到了最后,认真者失去对认真的信仰,投机者刷新了每一次下限。

 

这是谁的悲哀?

 

 

一块土里能长出什么果实,不仅看种子,也要看土,还要看培育人。

 

IPFS是颗好种子,

 

但,

 

他们是一群好的培育人吗?

 

中国会是那片好土壤吗?

 

 

梳理出这段代码的逻辑,绘制一个代码逻辑流程图 package com.mbcloud.cbc.core.business.service.preandpost.hbrn; import com.mbcloud.cbc.common.constants.DcBusinessConstants; import com.mbcloud.cbc.core.business.bo.CbcBusinessPropertyBO; import com.mbcloud.cbc.core.business.bo.CbcBusinessResultBO; import com.mbcloud.cbc.core.business.bo.CbcRequestBO; import com.mbcloud.cbc.core.business.bo.CbcResponseBO; import com.mbcloud.cbc.core.business.bo.GetTransInfoResultBO; import com.mbcloud.cbc.core.business.bo.GetTransInfoResultDetailBO; import com.mbcloud.cbc.core.business.constant.CBCCoreConstants; import com.mbcloud.cbc.core.business.exception.CbcException; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * IT811862 曹可乐 2025-04-23 从CBC迁移 * <p> * Title: 湖北农商行查当日明细 - 第一步 * </p> * * <p> * Description: 查当日明细(对接湖北农商行的对账重发YQ3002) * 一共分为两步: * 第一步: 发送查当日明细报文,触发银行推送明细文件到FTP,第一步查询成功,则进入第二步(每个文件最多包含5笔明细) * 第二步:向跨行前置发送获取文件内容的请求,跨行前置从FTP上下载对应的明细文件内容,并上送给后台 * </p> * * <p> * Copyright: 招银网络科技(杭州) 2019 * </p> * * @author 周欢 80273678 * @version 1.0 * @date 2019-08-21 */ @Service("hbrnGetCurTransInfoHandler") public class HbrnGetCurTransInfoHandler extends HbrnPreAndPostHandler { @Override public CbcRequestBO prerequestHandle(CbcBusinessPropertyBO cbcBusinessPropertyBO, CbcRequestBO cbcRequestBO, CbcResponseBO cbcResponseBO, List<CbcBusinessResultBO> cbcBusinessResultBO) throws CbcException { Map<String, String> bankCfgMap = cbcBusinessPropertyBO.getBankCfgMap(); // 因为农商行查当日明细,如果超过一定的笔数,就只能查回最新的cdtNum字符串长度的最大笔数,因此这里提供配置参数,防止农商行那边修改 String cdtNum = bankCfgMap.get(CDTNUM); if (StringUtils.isBlank(cdtNum)) { cdtNum = INITNUM; } // bussinessInfo中存在BEGNUM :表示为第二次查询,否则表示为第一次查询;首次查询,BEGNUM序号设置为"0000",之后取BGNDAT + counter (不足4位,则左补0) HashMap<String, Object> pageParam = cbcRequestBO.getExpandParam(); String begum = (String)pageParam.get(BEGNUM); //第一次请求设置当前页为1 if (StringUtils.isEmpty(begum)) { pageParam.put(BEGNUM, INITNUM); } else { HashMap<String, Object> expandParam = cbcRequestBO.getExpandParam(); String counter = String.valueOf(Integer.valueOf(String.valueOf(expandParam.get(CURRNUM))) + 1); if (counter.length() > cdtNum.length()) { // DWHBR26:查询当日明细笔数超过银行上限 throw new CbcException(CbcException.EXCEPTION_BEFORE_BANK, "DWHBR26"); } pageParam.put(BEGNUM, cdtNum.substring(counter.length()) + counter); } return cbcRequestBO; } @Override public CbcResponseBO postresponseHandle(CbcBusinessPropertyBO cbcBusinessPropertyBO, CbcRequestBO cbcRequestBO, CbcResponseBO cbcResponseBO, List<CbcBusinessResultBO> cbcBusinessResultBO) throws CbcException { CbcResponseBO responseBO = cbcResponseBO; if (responseBO == null) { List<CbcBusinessResultBO> businessResults = new ArrayList<>(); responseBO = new CbcResponseBO(); responseBO.setBusinessResults(businessResults); GetTransInfoResultBO getTransInfoResultBO = new GetTransInfoResultBO(); CbcBusinessResultBO cbcBusinessResultBO1 = cbcBusinessResultBO.get(0); getTransInfoResultBO.setRetCod(cbcBusinessResultBO1.getRetCod()); getTransInfoResultBO.setRetMsg(cbcBusinessResultBO1.getRetMsg()); List<GetTransInfoResultDetailBO> getTransInfoResultDetailBOS = new ArrayList<>(); getTransInfoResultBO.setTransDtl(getTransInfoResultDetailBOS); businessResults.add(getTransInfoResultBO); } else { CbcBusinessResultBO resultBO = responseBO.getBusinessResults().get(0); //查明细结果 GetTransInfoResultBO getTransInfoResultBO = (GetTransInfoResultBO)resultBO; GetTransInfoResultBO getTransInfoResultBO1 = (GetTransInfoResultBO)cbcBusinessResultBO.get(0); String retCod = getTransInfoResultBO1.getRetCod(); getTransInfoResultBO.setRetCod(retCod); getTransInfoResultBO.setRetMsg(getTransInfoResultBO1.getRetMsg()); //查询失败:删除明细,进行覆盖 if (!CBCCoreConstants.RET_COD_SUCCESS.equals(retCod)) { ArrayList<GetTransInfoResultDetailBO> getTransInfoResultDetailBOS = new ArrayList<>(); getTransInfoResultBO.setTransDtl(getTransInfoResultDetailBOS); cleanExtResultUpUnusedField(cbcRequestBO, cbcResponseBO); return responseBO; } } cleanExtResultUpUnusedField(cbcRequestBO, responseBO); setExtResult(cbcRequestBO, cbcBusinessResultBO); return responseBO; } @Override public boolean isRequestSuccess(CbcBusinessPropertyBO cbcBusinessPropertyBO, CbcRequestBO cbcRequestBO, CbcResponseBO cbcResponseBO, List<CbcBusinessResultBO> cbcBusinessResultBO) throws CbcException { return DcBusinessConstants.RET_COD_SUCCESS.equals(cbcBusinessResultBO.get(0).getRetCod()); } @Override public boolean beContinue(CbcBusinessPropertyBO cbcBusinessPropertyBO, CbcRequestBO cbcRequestBO, CbcResponseBO cbcResponseBO, List<CbcBusinessResultBO> cbcBusinessResultBO) throws CbcException { boolean isCirculFlag = false; if (DcBusinessConstants.RET_COD_SUCCESS.equals(cbcResponseBO.getBusinessResults().get(0).getRetCod())) { HashMap<String, Object> pageParam = cbcRequestBO.getExpandParam(); String fileName = pageParam.get(FILENAME) == null ? null : String.valueOf(pageParam.get(FILENAME)); isCirculFlag = StringUtils.isNotBlank(fileName); } if (!isCirculFlag) { cleanExtResultUpUnusedField(cbcRequestBO, cbcResponseBO); } return isCirculFlag; } }
10-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值