资深Golang区块链开发工程师(远程全职)

资深Golang区块链开发工程师(远程全职) 我们正在为一家致力于创建加密货币使用生态系统的公司寻找一名高级/团队负责人级别的 Golang 开发人员。 远程工作。

职责:

  • 参与区块链解决方案的设计、开发和实施;
  • 创建用于负载测试和协议基准测试的工具。

要求:

  • 具备 Cosmos SDK、CosmWasm、Tendermint 的使用经验;
  • 至少拥有 4 年编写人类和机器都能理解的软件开发经验;
  • 拥有丰富的 Golang 程序编写经验,深刻理解最佳实践、并发原语、go/* 包和反射;
  • 深入理解计算机科学基础知识,包括网络、存储、操作系统、数据结构、转译器/编译器等等;
  • 具备敏捷开发环境的经验;
  • 拥有分布式团队协作经验;
  • 熟悉类 UNIX 系统;
  • 了解 UNIX 网络栈(TCP / IP, HTTP);
  • 具备 gRPC 使用经验;
  • 熟悉 git。

额外优势:

  • 对区块链技术有基本了解;
  • 具备为 Kubernetes、Ansible、Docker、Terraform 等系统创建微服务的经验;
  • 对权益证明、共识算法、去中心化交易所、公钥密码学等主题感兴趣;
  • 拥有 CI 系统的设置和工作经验;
  • 具备中级及以上的英语水平。

联系方式: hr@relictum.pro

关于我们: 我们是一家由区块链和加密货币创新者及爱好者组成的公司。 https://relictum.pro/about


更多关于资深Golang区块链开发工程师(远程全职)的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

我的电子邮件地址是 devmetaverse34@gmail.com Discord ID 是 Phoenixz#8267

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


你好! 如何联系你? 请将你的简历发送至 hr@relictum.pro

你好,

我可以帮助你! 我已经从 maria@cisinlabs.com 给你发送了一封电子邮件。请查收并就同一事项分享你的反馈。

温暖的问候 Maria

大约一个月前,我还在寻找类似这样的工作。我不知道还能做些什么,并且认为没有相关知识就找不到其他工作。但我完全没想到自己错得有多离谱。一位朋友建议我尝试在证券交易所进行交易。他给我发送了mt5交易平台网站的链接。我惊讶地发现学习这个职业竟然如此简单。你只需要进行投资并密切关注当前汇率即可。最有趣的是,第二点就在网站上。只需为虚拟账户注资并开始赚钱。现在我不需要工作了。

男孩们(不是男人,而是男孩)和女孩们(不是女人,而是不成熟的女孩):区块链被用来实现加密货币。而加密货币被用来向数百万年轻人兜售不劳而获的致富梦想。

这个梦想的直接实际效果是,数百万人投入在改善自己生活上的努力,比他们通常本应投入的要少。

那么,为什么要帮助数百万人受骗呢?为什么不同情那些相信自己足够了解交易、能在加密货币中获利,却因此失去积蓄(和房子)的成千上万的老年人呢?为什么不对那些可怜的青少年心怀怜悯?他们不去学习一门手艺,而是逃课去读经济学书籍、查看图表。还有那些全职妈妈呢?她们在努力养家的同时,出于无聊决定“尝试一下加密货币”,最终却染上了瘾。

想想在2022年,像软件程序员这样的受过教育的人,竟然会为这样的骗局工作,真是令人作呕。我希望你能比这更好。

根据职位描述,这是一个对技术要求非常深入的Golang区块链开发岗位。以下是对核心职责和要求的专业技术分析及示例:

1. Cosmos SDK/Tendermint开发经验 这是该职位的核心技术栈。候选人需要熟悉Cosmos生态的模块化架构。

// 示例:Cosmos SDK模块的基本结构
type AppModule struct {
    keeper        keeper.Keeper
    accountKeeper types.AccountKeeper
    bankKeeper    types.BankKeeper
}

func (am AppModule) RegisterServices(cfg module.Configurator) {
    types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper))
    types.RegisterQueryServer(cfg.QueryServer(), keeper.NewQueryServerImpl(am.keeper))
}

// Tendermint共识节点配置示例
config := tmconfig.DefaultConfig()
config.P2P.ListenAddress = "tcp://0.0.0.0:26656"
config.Consensus.TimeoutCommit = 5 * time.Second

2. 高性能Golang并发编程 区块链节点需要处理大量并发连接和交易。

// 使用goroutine池处理交易
type TxProcessor struct {
    workerPool chan chan types.Tx
    maxWorkers int
}

func (p *TxProcessor) Start() {
    for i := 0; i < p.maxWorkers; i++ {
        worker := NewWorker(p.workerPool)
        worker.Start()
    }
}

// 使用context控制goroutine生命周期
func ProcessBlock(ctx context.Context, block *types.Block) error {
    ctx, cancel := context.WithTimeout(ctx, 30*time.Second)
    defer cancel()
    
    select {
    case <-ctx.Done():
        return ctx.Err()
    case result := <-processAsync(block):
        return result
    }
}

3. 负载测试工具开发 需要创建模拟网络条件的测试工具。

// 区块链负载测试示例
type LoadTester struct {
    clients []*grpc.ClientConn
    tps     int // 目标每秒交易数
}

func (lt *LoadTester) Run() {
    var wg sync.WaitGroup
    semaphore := make(chan struct{}, 1000) // 控制并发数
    
    for i := 0; i < lt.tps; i++ {
        wg.Add(1)
        semaphore <- struct{}{}
        
        go func(idx int) {
            defer wg.Done()
            defer func() { <-semaphore }()
            
            tx := generateTestTx(idx)
            if err := lt.sendTransaction(tx); err != nil {
                log.Printf("Tx failed: %v", err)
            }
        }(i)
        
        time.Sleep(time.Second / time.Duration(lt.tps))
    }
    
    wg.Wait()
}

4. gRPC服务实现 区块链节点间通信通常使用gRPC。

// 定义区块链gRPC服务
service BlockchainService {
    rpc BroadcastTx(TxRequest) returns (TxResponse);
    rpc QueryState(QueryRequest) returns (QueryResponse);
}

// 实现拦截器进行指标收集
func MetricsInterceptor(ctx context.Context, req interface{}, 
    info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
    
    start := time.Now()
    resp, err := handler(ctx, req)
    duration := time.Since(start)
    
    metrics.RPCDuration.WithLabelValues(info.FullMethod).Observe(duration.Seconds())
    return resp, err
}

5. CosmWasm智能合约交互

// 与CosmWasm合约交互示例
func ExecuteContract(client *cosmosclient.Client, contractAddr string, msg []byte) (*sdk.TxResponse, error) {
    // 构建执行消息
    executeMsg := &wasmtypes.MsgExecuteContract{
        Sender:   senderAddr,
        Contract: contractAddr,
        Msg:      msg,
        Funds:    sdk.NewCoins(),
    }
    
    // 广播交易
    resp, err := client.BroadcastTx(executeMsg)
    if err != nil {
        return nil, fmt.Errorf("contract execution failed: %w", err)
    }
    
    return resp, nil
}

6. 性能优化要点

  • 使用sync.Pool减少内存分配
  • 实现批处理减少I/O操作
  • 使用pprof进行性能分析
  • 优化序列化/反序列化路径

这个职位要求候选人不仅要有深厚的Golang功底,还需要对区块链底层技术有深入理解。代码需要关注内存安全、并发正确性和网络性能。

回到顶部