资深Golang工程师远程全职招聘

资深Golang工程师远程全职招聘 Volume Finance 正在招聘一名全职、远程的高级 Go 工程师(后端)

作为我们工程团队的高级 Golang 工程师,你将有机会参与我们围绕 Cosmos-SDK 构建的完整协议架构工作,该架构使用 Golang、Rust 和 Solidity 构建。我们的软件赋能 Sommelier 验证者来保护 Sommelier 网络,该网络在全球范围内提供金融自动化服务。作为早期员工,你将成为我们核心团队的关键部分,并对公司的发展方向产生重大影响。

职责:

  • 参与并推动 Cosmos SDK 上新功能的技术规范、设计、架构和实现
  • 为区块链状态机编写可复用的库和自定义逻辑,并确保充分的测试覆盖率
  • 参与代码审查
  • 在战略性推进新功能进展的同时,尽量减少技术债务
  • 帮助扩展团队并创建我们的工程文化
  • 参与并领导一个或多个 SDK 架构工作组的工作协调

要求

  • 拥有 3 年以上在生产环境中使用 Go 的经验,以及其他一些编程语言的扎实经验
  • 必须具备计算机科学学位
  • 能够按时完成交付物
  • 你喜欢学习并深入研究开源代码,为其他项目做出贡献
  • 你能够很好地组织自己,并能以敏捷的方式工作
  • 你喜欢在自主工作和通过结对编程及架构设计会议与同事紧密协作之间保持健康的平衡
  • 你喜欢分析解决方案,并能参与定义良好的架构
  • 良好的英文书面沟通能力至关重要
  • 有远程工作和/或领导团队的经验者优先
  • 有维护开源软件(特别是库和/或框架)的经验者优先
  • 有使用 Cosmos SDK 或相关技术的经验者优先
  • 你对区块链充满热情,使用过 DeFi 去中心化应用,并相信去中心化和区块链技术有机会改变当今金融世界的运作方式
  • 你在初创环境中茁壮成长,并且最适合在小型、跨职能的团队中工作,在那里你可以亲力亲为,动手实践
  • 你有兴趣在自我组织的环境中工作,并带来创造力,在 Cosmos Stargate SDK 内开创自己的计划

申请:VolumeFi - Senior Golang Engineer


更多关于资深Golang工程师远程全职招聘的实战教程也可以访问 https://www.itying.com/category-94-b0.html

4 回复

你好, 希望你一切顺利! 我很乐意协助你的需求,并希望进一步讨论。 期待尽快收到你的回复。 此致, Jennifer

更多关于资深Golang工程师远程全职招聘的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好 @Danielle_Roberts

我很乐意协助你完成你的需求。

请通过我的个人邮箱或Skype联系我,以便进一步详细讨论。

期待与你交流。

此致,

Sofia

邮箱:sofia at cisinlabs dot com

嗨 Jennifer,请在此处提交您的简历:

VolumeFi - 高级 Golang 工程师

关于职位: 作为我们工程团队的高级 Golang 工程师,您将有机会在我们围绕 Cosmos-SDK 构建的协议架构的各个层面工作,该架构使用 Golang、Rust 和 Solidity 构建。我们的软件赋能…

这是一个非常具体且要求很高的资深职位。从技术栈和职责描述来看,这是一个核心区块链协议层的开发角色,而非普通的Web后端开发。

技术栈分析: 职位明确要求围绕 Cosmos SDK 进行开发。Cosmos SDK本身是用Go编写的区块链开发框架,因此对Go的要求极高,不仅限于语法,更深入到并发模式、性能优化、模块化设计以及与区块链特定概念(如ABCI、Tendermint共识引擎、Merkle树、IBC)的集成。

核心职责对应的技术要求:

  1. “参与并推动 Cosmos SDK 上新功能的技术规范、设计、架构和实现”: 这要求工程师不仅会使用SDK,还要能理解其内部模块(如x/bank, x/staking)的设计哲学,并能仿照其模式编写自定义模块。例如,实现一个处理复杂金融自动化的新模块。

    // 这是一个非常简化的示例,展示一个自定义模块的Keeper结构,类似于Cosmos SDK的风格
    package types
    
    import (
        sdk "github.com/cosmos/cosmos-sdk/types"
    )
    
    // Keeper 负责管理模块的状态
    type Keeper struct {
        storeKey sdk.StoreKey
        cdc      *codec.Codec
        // 可能依赖其他模块的Keeper,如bankKeeper
        bankKeeper types.BankKeeper
    }
    
    func NewKeeper(storeKey sdk.StoreKey, cdc *codec.Codec, bk types.BankKeeper) Keeper {
        return Keeper{
            storeKey:   storeKey,
            cdc:        cdc,
            bankKeeper: bk,
        }
    }
    
    // 一个模块消息处理函数的示例骨架
    func (k Keeper) HandleMsgExecuteAutomation(ctx sdk.Context, msg MsgExecuteAutomation) (*sdk.Result, error) {
        // 1. 参数验证
        // 2. 状态读取 (ctx.KVStore(k.storeKey))
        // 3. 业务逻辑(可能涉及跨合约调用、复杂计算)
        // 4. 状态更新
        // 5. 事件发射 (ctx.EventManager().EmitEvent)
        // 6. 返回结果
        return &sdk.Result{Events: ctx.EventManager().Events()}, nil
    }
    
  2. “为区块链状态机编写可复用的库和自定义逻辑,并确保充分的测试覆盖率”: 这强调了代码质量和可测试性。在区块链中,状态机的确定性至关重要。测试不仅要覆盖单元测试,还需要集成测试和模拟测试(使用Cosmos SDK的simapp)。

    // 使用Go的表格驱动测试和模拟(mocking)来确保逻辑正确
    func TestKeeper_HandleMsgExecuteAutomation(t *testing.T) {
        testCases := []struct {
            name          string
            setup         func(ctx sdk.Context, k Keeper)
            msg           MsgExecuteAutomation
            expectErr     bool
            expectedState // ... 定义期望的状态
        }{
            {
                name: "successful execution",
                setup: func(ctx sdk.Context, k Keeper) {
                    // 初始化测试所需的状态
                },
                msg:       MsgExecuteAutomation{...},
                expectErr: false,
            },
            {
                name: "insufficient funds",
                setup: func(ctx sdk.Context, k Keeper) {...},
                msg:       MsgExecuteAutomation{...},
                expectErr: true,
            },
        }
    
        for _, tc := range testCases {
            t.Run(tc.name, func(t *testing.T) {
                // 1. 创建模拟的上下文、编码器和Keeper
                encCfg := simapp.MakeTestEncodingConfig()
                ctx, keeper := setupTest(t, encCfg)
    
                // 2. 运行setup
                if tc.setup != nil {
                    tc.setup(ctx, keeper)
                }
    
                // 3. 执行待测试的方法
                result, err := keeper.HandleMsgExecuteAutomation(ctx, tc.msg)
    
                // 4. 断言结果
                if tc.expectErr {
                    require.Error(t, err)
                } else {
                    require.NoError(t, err)
                    require.NotNil(t, result)
                    // 进一步断言状态变更和事件
                    // assertState(t, ctx, keeper, tc.expectedState)
                    // assertEvents(t, result.Events, tc.expectedEvents)
                }
            })
        }
    }
    
  3. “在战略性推进新功能进展的同时,尽量减少技术债务”: 这需要工程师有很强的系统设计能力,能在快速迭代的初创环境中做出平衡。例如,在设计新模块时,要考虑到未来的升级路径(通过Cosmos SDK的治理或升级模块),接口设计要清晰,避免过度设计但也要保持扩展性。

  4. “有使用 Cosmos SDK 或相关技术的经验者优先”: 这是关键加分项。相关技术包括:

    • Tendermint Core: Cosmos SDK的共识引擎。
    • IBC (Inter-Blockchain Communication): 跨链通信协议。
    • CosmWasm: 如果需要与智能合约交互。
    • Ignite CLI: 加速链开发的工具。
    • 密码学(椭圆曲线、签名、哈希)有基本理解。
    • 熟悉区块链数据结构(默克尔树、Patricia树)。

对申请者的建议(隐含在要求中):

  • “你喜欢学习并深入研究开源代码”:成功的申请者很可能已经阅读或贡献过Cosmos SDK、Tendermint或其他大型Go开源项目(如ethereum/go-ethereum)的代码。
  • “良好的英文书面沟通能力至关重要”:所有代码注释、设计文档、PR描述、技术讨论都将是英文。
  • “你对区块链充满热情…并相信去中心化”:这不仅是技术工作,更是对加密理念的认同。需要理解DeFi的基本概念(如AMM、借贷、清算)。

总的来说,这个职位寻找的是一位具备深厚Go工程能力、对区块链底层有强烈兴趣和实践经验、并能在一个快速发展的去中心化协议项目中承担核心架构责任的工程师。仅仅有Web后端开发经验是远远不够的,必须在区块链协议层有深入的理解或强烈的学习驱动力。

回到顶部