对话MVP

2023-11-10

 本期《对话MVP》,清华大学软件学院在读博士马福辰将为大家分享他参与社区共建4年以来的成长与蜕变。在这期间,他冲破迷茫,与团队协力开发了面向Solidity合约的安全分析工具SCStudio,并以开源形式贡献给社区。该工具帮助不少开发者检测安全漏洞,提升了区块链应用的安全性。希望他的经历,能为社区众多高校学子提供一些参考,一起来了解他与FISCO BCOS的故事吧。

 以下为马福辰访谈实录:

 开源社区的陪伴,坚定了研究区块链的决心

1.在国内区块链刚兴起之际,您投身于区块链与开源技术的契机是什么?为什么最终选择区块链作为自己的研究方向?

我是在2018年了解到区块链的,契机是参加了金链盟中国区块链应用大赛,那是我第一次接触FISCO BCOS,接触联盟链。当时我跟组里的同学一同设计了一款区块链跨层的安全保障系统,对智能合约和虚拟机层面的漏洞进行挖掘和检测。参赛过程中,我看见了许多基于FISCO BCOS的落地应用,比如在司法仲裁、供应链金融等领域,都取得了非常好的落地成果,从那儿以后我开始关注联盟链的发展,并选择区块链作为自己研究方向。

区块链令我着迷的地方在于,它在某种程度上是互联网和计算机行业的未来。区块链的本质是为了解决信任问题,信任对各行各业都非常重要,依靠区块链不可篡改和多中心化的特性,降低各方信任的难度。作为未来网络的基础设施,我也相信区块链技术会不断成熟,不断为社会创造更大的价值。

另外,最终选择这个方向也要感谢我的指导教师姜宇老师,当时组内没有人研究区块链相关方向,姜老师很鼓励和支持我们在区块链领域进行探索,这也坚定了我的决心。

2. 研究区块链期间,您认为最有成就感的事情是什么?

最有成就感的事情有几个,让我印象最深刻的是2018年的金链盟全国区块链应用大赛,那次我们团队进入了全国十强,在参赛过程中认识了很多区块链行业的优秀从业者,学习到了很多。第二个事情是入选了FISCO BCOS 2021年度MVP,我觉得来自开源社区的鼓励和认可对我的激励很大。最后就是最近在平台上找到了一些有价值的安全漏洞,得到了社区专家的认可。

总的来说,近些年与开源社区的互动让我收获了很多,也愈发坚定了我选择区块链的信心。

3. 上面提到,参赛期间您从区块链优秀从业者身上学到了很多,具体哪些地方让您感觉收获颇丰或感悟较深?

我之前在区块链行业接触到的研究都主要跟安全相关,参赛之前我和同学更关注的是技术实现层面的好坏,代码的质量等,对区块链应用都不是很了解。那次大赛中,让我感受最深的就是了解到区块链应该怎么真正地用起来,当时大赛前几名的团队都在利用区块链技术去做各种各样的应用落地,比如让我印象比较深的是在司法领域,应用区块链技术可以让跨省跨地域司法仲裁中一些很繁琐的程序变得很方便。从那以后,我就越来越关注国内以及国外一些区块链具体应用场景和应用落地的案例,也极大地丰富了我个人的视野。

  “做科研不能想当然,多听产业人士怎么说”

4. 在区块链研究探索过程中,您遇到过哪些困难和挑战,如何解决的?

总体来说,得益于学校导师及开源社区的支持,整体上比较顺利,遇到的主要困难是在论文投稿方面。有一段时间投递的论文经常被拒,有时一篇论文大概会被拒七八次,这让我一度陷入自我怀疑,怀疑自己做的事情是否有价值。

比如做智能合约漏洞扫描工具这个idea,我们内部小组也讨论过,但当时感觉好像没啥用就放弃了。后来通过与社区接触,了解到支持单合约的智能合约漏洞扫描工具,在目前联盟链以及公链中常见的跨合约场景下,可能会存在漏洞被隐藏起来的问题。我们在社区的帮助下,拿到了一些目前产业界开源的、涉及跨合约场景的合约案例,然后发现市面上的漏洞扫描产品确实不能完全监测到漏洞。

有了确切方向后,我们开始深入研究解决这个问题,因为之前我们的研究没有应用在真实的场景中,而学术领域也很关注研究的实际应用价值。后来经过努力,基于这个案例的研究形成了很好的学术成果输出,我自己也度过了迷茫阶段。

这件事对我的触动很深,做科研不能想当然,有的时候一个方案的否决和确定都非常需要多方的沟通和探讨,尤其需要多听听产业界人士怎么说,这也对我未来的科研态度和方向产生很大的影响:今后做任何研究课题都会尝试先听产业界专家怎么评价这件事。

5. 您和您的团队向社区贡献了Solidity合约安全分析工具SCStudio,请具体说说如何去做这件事情,有什么经验可以分享。

SCStudio是一个针对Solidity合约的安全分析工具,可帮助开发者在开发阶段检测出安全漏洞。其实SCStudio项目就是在社区开发者的建议下开始的,我们在了解到业界的需求之后,综合调研了已经存在的产品,然后去针对性地进行研究和开发。这让我们的研究少走许多弯路,同时这种更贴近工业界的研究也得到了学术界的认可。

经验主要有两个,首先是听取社区各界的意见。我认为开源社区本质上是一个多中心化的组织,就像一个区块链系统一样,每个人各抒己见,达成大多数的共识,才能让社区朝着健康的状态发展;另一个关键点是学习和观察其他人是怎么做的。

SCStudio代码仓库地址

https://github.com/FISCO-BCOS/SCStudio

6. 您加入了社区CTSC-SIG小组(智能合约编译技术兴趣小组),能分享下您加入小组的初衷及参与小组共建的感想吗?

吸引我加入这个兴趣小组的主要原因是小组设立的初衷。CTSC-SIG小组成立的主要目的就是帮助开发人员在使用FISCO BCOS做代码开发的过程中体验更“丝滑”。这个“丝滑”是多个方面的,包括合约本身的一些特性、代码本身的质量以及刚入门的开发者上手的易用性程度等。

平时我们小组主要会围绕FISCO BCOS开发易用、安全、高效的智能合约编程语言及周边工具,比如持续迭代智能合约编程语言Liquid,监控和扫描代码质量等,希望能助力开发者快速上手。 

在参与建设CTSC-SIG小组的过程中,我感受最深的就是小组成员会经常交流意见,大家会对平台未来的设计提出很多idea,并展开讨论和分析,这些建议也给平台未来的开发方向提供了很好的参考。 

MVP,社区和生态发展的 “助攻者”

7. 您如何理解MVP在社区中的角色?

MVP这个词在体育运动和电子竞技中经常出现。我个人很喜欢看足球比赛,在绿茵场上,一场比赛的MVP有两种。第一种是某位球员进球特别多,比如姆巴佩上演帽子戏法,拿到了比赛的MVP。另一种是某位球员,虽然进球不如别人多,但是助攻非常多,比如梅西在美洲杯上5次助攻当选赛事MVP。

我觉得在开源社区也是一样,MVP的作用除了为开源社区贡献很多的落地应用外,也可以为这些应用提供帮助和保障。我非常荣幸能被社区选为2021年的MVP,我觉得自己是擅长并热衷于“助攻”的那种。我们小组一直以来致力于保障工业系统的安全,我和我的同学一直希望可以为区块链的应用层和底层的代码安全保驾护航,希望我们的工作可以“助攻”越来越多的区块链应用落地,“助攻”平台的研发和建设,“助攻”社区的健康发展。

8. 未来您期望在社区继续做哪些“助攻”的事情?

现在主要做的事情是针对联盟链的共识协议,监测它在具体实践中是否会疏忽,并优化代码上的小bug,在这些方面把共识的安全保障起来。目前也发现了一些确实存在的问题并上报给社区,得到了社区的回复和肯定。未来还是希望能从安全性的角度继续为FISCO BCOS平台保驾护航,帮助开发者在区块链落地应用的时候免受安全性的困扰。

同时,也希望可以在社区跟其他成员多进行互动分享。技术布道现在还是一件非常重要的事情,希望尽自己所能,把自己获取的新技术、新资讯分享到社区,让更多小伙伴喜爱并了解区块链技术。

9. 您觉得高校学子参与开源社区有什么用?

不管是对刚入门的高校学子,还是在平台上深耕了很久、相对资深的研究者来说,社区带来的帮助都是巨大的。一个最直观的例子就是,在FISCO BCOS平台上检测出漏洞之后,一般不超过24小时就会得到回复或修复,而在其他平台可能一个月甚至两三个月都没有人回复。

所以社区生态和氛围真的很重要:一方面社区可以帮助检验你的科研成果,另外一方面发现问题后得到及时快速地反馈,也是一种很有价值的正向激励,这也是我在联盟链受益良多的地方。

10. 谈谈您对区块链行业发展的认识,未来希冀?

我个人认为区块链行业的发展还处于早期阶段,目前还面临着一些问题。首先是国内大多数人对区块链缺乏足够的认识。作为从业者,我们应该承担区块链技术布道的责任,让大众看到它的真正价值。此外,区块链需要一款杀手级to C应用来真正点燃,目前的应用以to B为主。从业者需要持续思考,从大众层面区块链能带来的最直接改变是什么。

目前我也看了一些很棒的区块链应用。比如基于FISCO BCOS研发,并采用微众区块链开源技术粤澳健康码互认系统,它可以实现粤澳两地健康码互认,帮助两地人员快速通关。我也希望后面能涌现出更多深入人心的区块链应用,让区块链技术真正走进大众生活。

推荐阅读:

一图读懂FISCO BCOS MVP计划

了解更多干货内容,请关注FISCO BCOS开源社区公众号,访问FISCO BCOS代码仓库可下载项目所有源代码:https://github.com/FISCO-BCOS/FISCO-BCOS欢迎点击页面右上角star收藏,获取最新版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对话MVP 的相关文章

  • git 服务端钩子做代码检查

    需求分析 在代码修改后可以对代码进行检查 比如代码规范检查 代码构建 单元测试等 我们需要禁止成员推送不符合规范的代码到服务端 Git 钩子能在特定的重要动作发生时触发自定义脚本 钩子分为客户端和服务器端两类 使用客服端钩子可以在commi
  • 字符游戏-智能蛇

    字符游戏 智能蛇 一 VT 100 终端标准 这里按照老师的课件要求 体验一下VT 100 输入输出功能以及清屏操作 代码直接复制课件中代码 这里就不再放一次了 直接给出运行效果 gcc sin demo c osin out lm sin

随机推荐

  • OpenAI开发系列(一):一文搞懂大模型、GPT、ChatGPT等AI概念

    全文共5000余字 预计阅读时间约10 20分钟 满满干货 建议收藏 本文目标 详细解释大型语言模型 LLM 和OpenAI的GPT系列的基本概念 一 什么是大模型 大型语言模型 也称大语言模型 大模型 Large Language Mod
  • 解决Centos7没有ens33

    进入centos7操作 ifconfig ens33 up systemctl stop NetworkManager systemctl disable NetworkManager ifup ens33 systemctl restar
  • explain查看索引使用

    CREATE TABLE test id int 11 NOT NULL name varchar 20 DEFAULT NULL dep id int 11 DEFAULT NULL age int 11 DEFAULT NULL tt
  • Qt中正确引用外部头文件和库文件的方法和注意点

    Qt中正确引入外部库文件的方法和注意点 一 什么报错是外部库导入错误导致的 二 解决外部库使用的方法 一 写入系统环境变量中的外部库调用 1 解释说明 2 使用演示 1 头文件 2 库文件 二 未写入系统环境变量中的外部库调用 1 解释说明
  • controller层

    前言 controller层代码主要流程都是 1 获取前端数据 运用request getParameter 数据名 2 创建user对象 用来传递参数 创建Service对象 用来使用Service服务的方法 3 调用Service的方法
  • C++11内存对齐之std::aligned_storage与alignas与alignof

    1 std aligned storage 插播一下POD的含义 Plain old data structure 缩写为POD 是C 语言的标准中定义的一类数据结构 POD适用于需要明确的数据底层操作的系统中 POD通常被用在系统的边界处
  • DateTime转换为时间戳

  • 记一次线性插值方法(Mathf.Lerp())的使用体会

    对Mathf Lerp 方法使用体会源于一次开发游戏对警报灯闪烁问题进行处理时 public static float Lerp float from float to float t 分析一下对线性插值函数的认识 就是在from与to之间
  • 看完这篇文章保你面试稳操胜券——小程序篇

    进大厂收藏这一系列就够了 全方位搜集总结 为大家归纳出这篇面试宝典 面试途中祝你一臂之力 共分为四个系列 本 篇 为 看 完 这 篇 文 章 保 你 面 试 稳 操 胜 券 第 四 篇
  • springboot mysql链接语句字段分析

    jdbc mysql localhost 3306 xxxx useUnicode true characterEncoding utf8 zeroDateTimeBehavior convertToNull useSSL true ser
  • 几个简单的system(const char* _Command)函数命令

    几个简单的system const char Command 函数命令 呼出终端 Windows键 r 然后输入cmd system const char Command 函数常用命令 如 system cls 1 shutdown常用命令
  • JS 实现全屏切换,移动端适用

    JS 实现全屏切换 移动端适用 直接看代码吧 简单 只是有些人不知道这个 api 我之前就不知道
  • tensorflow搭建自己的残差网络(ResNet)

    废话不说 直接上代码 首先 pip install tflearn 训练代码 coding utf 8 from future import division print function absolute import import tf
  • python HTTP Server 文件上传与下载

    实现在局域网 同一WIFI下 文件上传与下载 该模块通过实现标准GET在BaseHTTPServer上构建 和HEAD请求 将所有代码粘贴到同一个py文件中 即可使用 所需包 基于python3版本实现 python2版本无涉猎 impor
  • LeetCode-1606. 找到处理最多请求的服务器、C++中优先队列的使用

    你有 k 个服务器 编号为 0 到 k 1 它们可以同时处理多个请求组 每个服务器有无穷的计算能力但是 不能同时处理超过一个请求 请求分配到服务器的规则如下 第 i 序号从 0 开始 个请求到达 如果所有服务器都已被占据 那么该请求被舍弃
  • 如何构建用户画像

    从1991年Tim Berners Lee发明了万维网 World Wide Web 开始 到20年后2011年 互联网真正走向了一个新的里程碑 进入了 大数据时代 经历了12 13两年热炒之后 人们逐渐冷静下来 更加聚焦于如何利用大数据挖
  • vue3的hooks和vue2的mixins有什么区别

    接上一篇文章继续解释 语法和用法 Hooks 是在 Vue 3 的 Composition API 中引入的一种函数式编程的方式 而 Mixins 是在 Vue 2 中的一种对象混入机制 Hooks 使用函数的方式定义和使用 而 Mixin
  • Android9自动更新,详解Android app自动更新总结(已适配9.0)

    1 配置 1 1 AndroidManifest xml中添加权限和FileProvider android name androidx core content FileProvider android authorities com f
  • Oracle 数据库密码文件的使用和维护

    Oracle 数据库密码文件的使用和维护 最近在做dataguard测试时 遇到个关于oracle的密码文件的问题 现在就把有关密码文件做下简单的总结 方便以后应对类似的问题 概要 Oracle 关系数据库系统以其卓越的性能获得了广泛的应用
  • 对话MVP

    本期 对话MVP 清华大学软件学院在读博士马福辰将为大家分享他参与社区共建4年以来的成长与蜕变 在这期间 他冲破迷茫 与团队协力开发了面向Solidity合约的安全分析工具SCStudio 并以开源形式贡献给社区 该工具帮助不少开发者检测安