区块链中文技术社区 - Cross chain-新手教程
type: channel
link: https://bcskill.com/index.php/category/Cross-chain-新手教程/
items: bsc-eth-swap 编译及部署测试
items: 测试如何用Cosmos创建并交易通证
items: Wrapper for node-ipfs-api
items: IPFS 介绍及Windows系统下环境搭建使用

bsc-eth-swap 编译及部署测试
type: item
date: 2021-08-20T10:54:00+08:00
description: 背景 项目后期需要准备一个ETH体系的资产IBC服务，设计要求轻量稳定安全。 前面对poly做过技术调研，相对去中心化，但导致运行和运维成本过高，以及近期出现的安全性问题，所以暂时搁置。 本片文章将针对BSC提供的Swap服务做技术调研，由于没有找到官方的部署文档，只有技术实现讲解，所以本篇文章将从合约代码，以及Swap程序代码阅读方向进行部署文档的反推整理。 合约实现包含了可升级合约的实现架构，相关技术细节可参考《使用OpenZeppelin编写可升级合约》 本篇文章先做bsc-eth-swap项目的部署和测试整理，后面将针对服务做二次开发或者模式技术参考，目标是开发出一个ETH体系多链资产和NFT轻量的IBC服务，后期再迭代成多节点去中心化模式。 项目组成 项目合约：https://github.com/binance-chain/eth-bsc-swap-contracts.git 项目程序：https://github.com/binance-chain/bsc-eth-swap.git 官方文档 https://github.com/binance-chain/bsc-eth-swap/blob/main/docs/spec.md 编译合约 git clone https://github.com/binance-chain/eth-bsc-swap-contracts.git cd eth-bsc-swap-contracts/ sudo npm i -g truffle npm i npm run truffle:compile 部署合约 为了方便测试，以及etherscan区块浏览器对于数据的展示较完整，所以我们选择的测试网络为 Goerli Test Network Ropsten Test Network ETH合约部署在Goerli（主），BSC合约部署在Ropsten（侧） ETH链合约部署 部署网络 Goerli Test Network 部署ETHSwapAgentImpl合约 使用编译后的build\contracts\ETHSwapAgentImpl.json中的abi和bytecode部署合约。 ETHSwapAgentImpl ABI [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"erc20Addr","type":"address"},{"indexed":true,"internalType":"bytes32","name":"bscTxHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapFilled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sponsor","type":"address"},{"indexed":true,"internalType":"address","name":"erc20Addr","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"},{"indexed":false,"internalType":"uint8","…

测试如何用Cosmos创建并交易通证
type: item
date: 2019-07-15T19:41:00+08:00
description: 安装go环境 下载并安装go https://golang.org/dl/ wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz // 下载 tar -C $HOME -xzf go$VERSION.$OS-$ARCH.tar.gz // 解压到home/go 配置环境变量 mkdir -p $HOME/go/bin echo "export GOPATH=$HOME/go" >> ~/.bash_profile echo "export GOBIN=$GOPATH/bin" >> ~/.bash_profile echo "export PATH=$PATH:$GOBIN" >> ~/.bash_profile source ~/.bash_profile 安装cosmos 先解决墙内问题 一键解决 go get golang.org/x 包失败 https://shockerli.net/post/go-get-golang-org-x-solution/ export GO111MODULE=on export GOPROXY=https://goproxy.io // Go version >= 1.11 下载代码并编译 mkdir -p $GOPATH/src/github.com/cosmos cd $GOPATH/src/github.com/cosmos git clone https://github.com/cosmos/cosmos-sdk cd cosmos-sdk && git checkout v0.35.0 make tools install 那将安装gaiad和gaiacli二进制文件。验证一切正常： gaiad version --long gaiacli version --long 安装jq sudo apt-get install jq 开始配置 设置新节点 gaiad init <your_custom_moniker> // 注意Monikers只能包含ASCII字符。使用Unicode字符将使您的节点无法访问。 您可以moniker稍后在~/.gaiad/config/config.toml文件中进行编辑： # A custom human readable name for this node moniker = "<your_custom_moniker>" 您可以编辑该~/.gaiad/config/gaiad.toml文件以启用反垃圾邮件机制并拒绝低于最低汽油价格的传入交易： # This is a TOML config file. # For more information, see https://github.com/toml-lang/toml ##### main base config options ##### # The minimum gas prices a validator is willing to accept for processing a # transaction. A transaction's fees must meet the minimum of any denomination # specified in this config (e.g. 10uatom). minimum-gas-prices = "" 您的完整节点已初始化！ 创建Genesis文件并启动网络 # You can run all of these commands from your home directory cd $HOME # Initialize the genesis.json file that will help you to bootstrap the network gaiad init --chain-id=testing testing # Create a key to hold your validator account gaiacli keys add validator # Add that key into the genesis.app_state.accounts array in the genesis file # NOTE: this command lets you set the number of coins. Make sure this account has some coins # with the genesis.app_state.staking.params.bond_denom denom, the default is…

Wrapper for node-ipfs-api
type: item
date: 2018-07-05T20:31:18+08:00
description: github

IPFS 介绍及Windows系统下环境搭建使用
type: item
date: 2018-06-15T11:12:00+08:00
description: IPFS（InterPlanetary File System）是一个点对点的分布式超媒体分发协议，它整合了过去几年最好的分布式系统思路，为所有人提供全球统一的可寻址空间，包括Git、自证明文件系统SFS、BitTorrent和DHT，同时也被认为是最有可能取代HTTP的新一代互联网协议。 IPFS用基于内容的寻址替代传统的基于域名的寻址，用户不需要关心服务器的位置，不用考虑文件存储的名字和路径。我们将一个文件放到IPFS节点中，将会得到基于其内容计算出的唯一加密哈希值。哈希值直接反映文件的内容，哪怕只修改1比特，哈希值也会完全不同。当IPFS被请求一个文件哈希时，它会使用一个分布式哈希表找到文件所在的节点，取回文件并验证文件数据。 IPFS是通用目的的基础架构，基本没有存储上的限制。大文件会被切分成小的分块，下载的时候可以从多个服务器同时获取。IPFS的网络是不固定的、细粒度的、分布式的网络，可以很好的适应内容分发网络的要求。这样的设计可以很好的共享各类数据，包括图像、视频流、分布式数据库、整个操作系统、模块链、8英寸软盘的备份，还有静态网站。 1、下载IPFS 打开官网https://ipfs.io/ ，点击Try it 点击 Install IPFS now 开始下载 下载对应版本的IPFS安装文件 下载完之后，将文件解压 2.安装IPFS 打开CMD，进入IPFS解压目录 初始化 ipfs网络环境ipfs init 并且系统会分配一个属于你自己的IPFS网络哈希值(类似你在IPFS网络中的一张身份证ID)。有了这个ID，别人就可以访问到你的节点。 输入 ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme 出现Hello and Welcome to IPFS! 那恭喜你！说明你的电脑已经成功安装IPFS并已经加入到IPFS网络了。 3.IPFS系统配置 查找配置 IPFS的初始化配置在当前系统的用户目录 打开config配置文件 具体的配置参数以及如何修改，此处不做具体说明，请参考官网4.服务运行 输入ipfs daemon启动IPFS服务监听，用于监听IPFS网络通信数据，默认使用的监听端口是5001，请确保此端口不被占用。也可自行修改config配置 "API": "/ip4/127.0.0.1/tcp/5001", "Gateway": "/ip4/127.0.0.1/tcp/8080" 5.IPFS使用测试 重新打开另一CMD，并进入IPFS文件目录 使用ipfs help获取常用命令参数 C:\Users\Surou\Desktop\Ipfs>ipfs help USAGE ipfs - Global p2p merkle-dag filesystem. ipfs [--config=<config> | -c] [--debug=<debug> | -D] [--help=<help>] [-h=<h>] [--local=<local> | -L] [--api=<api>] <command> ... SUBCOMMANDS BASIC COMMANDS init Initialize ipfs local configuration add <path> Add a file to IPFS cat <ref> Show IPFS object data get <ref> Download IPFS objects ls <ref> List links from an object refs <ref> List hashes of links from an object DATA STRUCTURE COMMANDS block Interact with raw blocks in the datastore object Interact with raw dag nodes files Interact with objects as if they were a unix filesystem dag Interact with IPLD documents (experimental) ADVANCED COMMANDS daemon Start a long-running daemon process mount Mount an IPFS read-only mountpoint resolve Resolve any type of name name Publish and resolve IPNS names key Create and list IPNS name keypairs …