Solana合约开发:从原生到Anchor

如果你和我一样是一名以太坊开发者,那么在尝试开发 Solana 时,你一定和我当初一样感到困惑。Solana 是如此不同且独特。在这篇文章中,我将向你展示一份精心设计的路线图,帮助你尽快开始在 Solana 上进行开发。

在开始之前,我假设你已经对 Solana 有一些基础知识,包括它的账户模型和程序系统,以及对 Rust 编程语言的基本了解。如果你对这些内容不是很熟悉也没关系,只要有基础理解,这篇文章就足够了。

此外,我假设你使用的是 Linux 系统,并且已经安装了 rust、solana-cli 和 anchor。如果你是 Windows 用户,我强烈推荐使用 WSL2,因为 anchor 对 Windows 的支持不是很好。

Read more

一名以太坊开发者眼中的 Solana

我从 2017 年开始在以太坊平台上开发,不得不说 Solidity 在当时是一个非常出色的设计。它简单的语法使学习变得容易,像 Remix 这样的工具简化了测试和部署。对于更复杂的项目,Truffle 和 Hardhat 等框架也能满足需求。然而,Solidity 并不完美,升级难度大以及有限的处理能力使其不太适合大规模项目。

我从 2023 年开始学习 Solana 开发。Solana 与以太坊有着完全不同的设计,对于一名以太坊开发者来说,学习 Solana 是一个相当有挑战的旅程。在这篇文章中,我们将讨论以太坊与 Solana 之间最显著的区别:账户模型、程序系统以及代币程序。

Read more

C++20四大之Range

本文是C++20四大系列的收官之作,不少读者可能会与这样的疑问:位列四大的range是个什么特性? 笔者一开始也有同样的感觉:C++20前三大都是“划时代”的改动:module改变了C++工程的组织模型,coroutine改变了C++并发的实现、concept则是模板编程自存在以来的最大变革,range到底带来了哪些改变,可位列于四大? 因为他改变了循环的方式,或者说,他给循环提供了更高层的抽象

Read more

C++20四大之Concept

前言:C++模板的演进 模板的演进是C++发展史中一条十分重要的线,个人觉得Concept是这条线中最大的一个特性了。在介绍Concept之前,我们先捋一捋模板这条线的发展。

timeline
    title C++ Templates Evolution
    1979 : C with Classes - First Implementation
    1988 : First Formal Proposal of Templates
    1998 : Templates Enter the Standard (Function/Class Templates, SFINAE)
    2011 : C++11 Variadic Templates
    2014 : C++14 Variable Templates, Generic Lambda
    2017 : C++17 Template Parameter Deduction, if constexpr
    2020 : C++20 Concepts
Read more

C++20四大之二:coroutines特性详解

上一篇博客中我们介绍了C++20中module相关的特性,本篇博客我们通过三个可运行的完整示例来体验下C++20中的协程:coroutine。 全文共三部分,第一部分从概念上讨论协程与普通函数的区别;第二部分通过两个个完整的协程代码示例,并深入到编译器层面,深入解析promise_type及其工作流程;第三部分介绍了co_await的作用以及工作原理,该部分是本文最难理解的部分。

Read more

C++20四大之一:module特性详解

前言

C++20最大的特性是什么? ——最大的特性是迄今为止没有哪一款编译器完全实现了所有特性。

Read more

C++14与C++17新特性,你想知道的都在这

C++14篇

相对于C++11,C++14的改动可谓非常mini了,主要的改动一句话便是:扩大自动类型推断的应用范围。剩下的都是边边角角的小改动

这包括:

  • 函数返回值自动推断
  • 泛型lambda
Read more

C++11新特性之——新标准库

新版本的标准库添加了许多新的特性,本文只介绍特性的简单使用,不做原理上的探究,否则篇幅将无法控制。

Read more

C++11新特性之——新语义

本文是C++11新特性系列的第二篇们主要记录C++11的新语意。

Read more

C++11新特性之——新关键字

C++11新引入的特性比较多,这里简单记录下每个特性的大致情况,无法将细节一一描述清楚——那样每个特性几乎都要花费一篇博客的篇幅来记录。本文从新增的关键字新增的语义新增的标准库三个方面来记录这些新特性。原本打算将这三部分放到一篇博客中,后来发现太长了,还是分开吧。

Read more

std::move与std::forward代码分析

在上一篇博客中我们知道了什么是移动语意以及完美转发,在这期间我们使用了两个新的std函数: std::move 与 std::forward。

  • std::move 的作用:将一个左值转换为一个右值
  • std::forward的作用:将实参的左右值属性在实参转发时完整保留。

我们理解了移动语意以及完美转发后,有必要探究一下std::move 与 std::forward两个函数的内部实现,这需要一些关于C++模板的基本知识:

Read more

C++11:右值引用、移动语意与完美转发

在C++11之前我们很少听说左值、右值这个叫法,自从C++11支持了右值引用之后,大多数人会像我一样疑惑:啥是右值?

准确的来说:

  1. 左值:拥有可辨识的内存地址的标识符便是一个左值。
  2. 右值:非左值。
  3. 左值引用:左值标识符的一个别名,简称引用
  4. 右值引用:右值标识符的一个别名
Read more

win10下开发部署Dapp(0):从零开始

我个人算是一个比较后知后觉的人,2017年12月底才开始炒币,开始深入了解区块链。这里以一个新人的角度回忆一下这段时间的收获,做个记录,同时希望能给其他人一些帮助。 在我学习区块链的过程中,给我最大迷惑的,其实是“挖矿”这个词。我们从What、Why、How三个方向解释一下“挖矿”。在这之前,我们先得弄清什么是区块链,什么是比特币。

Read more