区块链跨链桥交易系统开发智能合约部署

简介: 区块链跨链桥交易系统开发智能合约部署

区块链所面临的诸多问题中,区块链之间互操作性极大程度的限制了区块链的应用空间。不论是公有链还是联盟链,跨链技术就是实现价值互联网的关键,是区块链向外拓展和连接的桥梁。目前主流的跨链技术包括:
公证人机制(Notary schemes)
侧链/中继链(Sidechains/relays)
哈希锁定(Hash-locking)
分布式私钥控制(Distributed private key control)

跨链交易流程
主链到侧链
主链用户将代币发送至联邦合约地址,收集人监控联邦地址,发现跨链交易后生成Claim交易,发送至侧链
侧链到主链
侧链用户发起提现交易,销毁侧链资产。收集人监控侧链至主链交易,向主链地址发送对应数量资产。最后联邦在侧链生成一笔完成提现的操作交易。
2、代码解析
跨链代码主要处于federation文件夹下,这里就这部分代码进行一个介绍。
(1)keeper启动
整个跨链的关键在于同步主链和侧链的区块,并处理区块中的跨链交易。这部份代码主要在mainchain_keerper.go和sidechain_keerper.go两部分中,分别对应处理主链和侧链的区块。keeper在Run函数中启动。
func (m *mainchainKeeper) Run() {

ticker := time.NewTicker(time.Duration(m.cfg.SyncSeconds) * time.Second)
for ; true; <-ticker.C {
    for {
        isUpdate, err := m.syncBlock()
        if err != nil {
            //..
        }
        if !isUpdate {
            break
        }
    }
}

}

Run函数中首先生成一个定时的Ticker,规定每隔SyncSeconds秒同步一次区块,处理区块中的交易。
(2)主侧链同步区块
Run函数会调用syncBlock函数同步区块。
func (m *mainchainKeeper) syncBlock() (bool, error) {

chain := &orm.Chain{Name: m.chainName}
if err := m.db.Where(chain).First(chain).Error; err != nil {
    return false, errors.Wrap(err, "query chain")
}

height, err := m.node.GetBlockCount()
//..
if height <= chain.BlockHeight+m.cfg.Confirmations {
    return false, nil
}

nextBlockStr, txStatus, err := m.node.GetBlockByHeight(chain.BlockHeight + 1)
//..
nextBlock := &types.Block{}
if err := nextBlock.UnmarshalText([]byte(nextBlockStr)); err != nil {
    return false, errors.New("Unmarshal nextBlock")
}
if nextBlock.PreviousBlockHash.String() != chain.BlockHash {
    //...
    return false, ErrInconsistentDB
}

if err := m.tryAttachBlock(chain, nextBlock, txStatus); err != nil {
    return false, err
}

return true, nil

}
这个函数受限会根据chainName从数据库中取出对应的chain。然后利用GetBlockCount函数获得chain的高度。然后进行一个伪确定性的检测

相关文章
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
21天前
|
存储 开发框架 安全
揭秘区块链:以太坊智能合约开发的奥秘与挑战,你准备好迎接未来了吗?
【10月更文挑战第25天】本文介绍了区块链技术的基本概念及其核心特点,重点讲解了以太坊智能合约的开发流程和实际开发中的注意事项。通过安装 Truffle、Ganache 和 Remix 等工具,读者可以快速上手编写、编译、部署和测试智能合约。文章还对比了以太坊去中心化应用与传统集中式应用的优势和挑战,帮助读者全面了解以太坊智能合约开发。
28 0
|
2月前
|
供应链 物联网 区块链
|
3月前
|
供应链 物联网 分布式数据库
探索区块链技术与智能合约开发的边界
随着信息技术的发展,区块链作为一种分布式数据库技术正深刻影响社会。本文探讨区块链基本原理及其在金融、供应链等领域的应用,并聚焦智能合约——一种自动执行且不可篡改的代码,介绍其开发流程与丰富案例。同时,文章分析了技术与法律层面面临的挑战,展望未来发展趋势。
64 4
|
3月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
62 0
|
4月前
|
存储 安全 Java
基于Java的区块链数字身份认证系统设计与开发
基于Java的区块链数字身份认证系统设计与开发
|
5月前
|
监控 算法 安全
如何优化区块链跨链效率
**摘要:** 面对跨链效率挑战,本文探讨技术优化和策略以提升区块链跨链性能。统一跨链标准、优化共识算法、利用侧链和中继链以及分布式账本技术是关键技术手段。同时,加强合作、优化激励机制和确保监管合规也是策略重点,旨在实现高效、稳定的跨链互联。
|
5月前
|
存储 供应链 安全
区块链跨链技术:打破壁垒,促进互联互通
**区块链跨链技术摘要** - 面对区块链间的壁垒,跨链技术兴起,助力资产流通与信息共享。 - 跨链技术实现包括原子交换(基于哈希时间锁的交易)和流动性置换(通过智能合约创建侧链)。 - 应用涵盖金融(数字货币流通,DeFi)、物流(供应链透明度)、版权保护(多链确权)等领域。 - 挑战包括技术差异、安全稳定性和监管合规,未来有望成熟并推动区块链生态互联。
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。
|
开发框架 安全 前端开发
区块链财务管理平台如何开发?区块链财务管理平台开发源码规则解析
开发一个区块链财务管理平台需要多个方面的技术和知识,以下是一些可能的步骤和考虑因素: