Hello World - 2023年7月
type: channel
link: https://wlwl.host/index.php/2023/07/
description: Just So So ...
items: git 命令
items: cosmos 治理
items: cosmos 运行

git 命令
type: item
date: 2023-07-31T14:44:00+00:00
description: 安装$ sudo apt install git #两个都安装命令git init # 初始化本地git仓库（创建新仓库） git config --global user.name "xxx" # 配置用户名 git config --global user.email "xxx@xxx.com" # 配置邮件 git config --global color.ui true # git status等命令自动着色 git config --global color.status auto git config --global color.diff auto git config --global color.branch auto git config --global color.interactive auto git config --global --unset http.proxy # remove proxy configuration on git git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库 git status # 查看当前版本状态（是否修改） git add xyz # 添加xyz文件至index git add . # 增加当前子目录下所有更改过的文件至index git commit -m 'xxx' # 提交 git commit --amend -m 'xxx' # 合并上一次提交（用于反复修改） git commit -am 'xxx' # 将add和commit合为一步 git rm xxx # 删除index中的文件 git rm -r * # 递归删除 git log # 显示提交日志 git log -1 # 显示1行日志 -n为n行 git log -5 git log --stat # 显示提交日志及相关变动文件 git log -p -m git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容 git show dfb02 # 可只用commitid的前几位 git show HEAD # 显示HEAD提交日志 git show HEAD^ # 显示HEAD的上一个版本的提交日志 ^^为上两个版本 ^5为上5个版本 git tag # 显示已存在的tag git tag -a v2.0 -m 'xxx' # 增加v2.0的tag git show v2.0 # 显示v2.0的日志及详细内容 git log v2.0 # 显示v2.0的日志 git diff # 显示所有未添加至index的变更 git diff --cached # 显示所有已添加index但还未commit的变更 git diff HEAD^ # 比较与上一个版本的差异 git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异 git diff origin/master..master # 比较远程分支master上有本地分支master上没有的 git diff origin/master..master --stat # 只显示差异的文件，不显示具体内容 git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义（用于push/pull/fetch） git branch # 显示本地分支 git branch --contains 50089 # 显示包含提交50089的分支 git branch -a # 显示所有分支 git branch -r # 显示所有原创分支 git branch --merged # 显示所有已合并到当前分支的分支 git branch --no-merged # 显示所有未合并到当前分支的分支 git branch -m master master_copy # 本地分支改名 git checkout -b master_copy # 从当前分支创建新分支master_copy并检出 git checkout -b master master_copy # 上面的完整版 git checkout features/performance # 检出已存在的features/performance分支 git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支 git checkout v2.0 # 检出版本v2.0 git checkout -…

cosmos 治理
type: item
date: 2023-07-22T08:34:00+00:00
description: 一、简介cosmos使用gov模块来提供链上治理功能，让代币持有人拥有共同治理区块链的能力，用户可以通过这个模块提供的接口进行以下操作：提交提案：任意用户可以缴纳押金发起提案。一旦达到最低押金，提案就进入投票期投票：拥有投票权的用户可以对进入投票期的提案进行投票，有四种投票选项：支持、反对、弃权、否决提案查询：查询提案，每一个提交过的提案都有一个唯一ID，通过这个ID可以查询提案内容和投票详情二、提案提案包括以下类型：text：纯文本提案community-pool-spend：社区池资金申请software-upgrade：软件升级cancel-software-upgrade：取消软件升级other：其他交易消息，包括参数更新消息cosmos的一笔交易里面可以包含多个消息调用，有些消息用户不能直接发送，可以由提案发起，比如说模块参数更新除了纯文本的提案，其他提案会包含对应的消息调用，如果提案被通过，将会自动执行消息调用，gov模块有一些治理相关的参数，其他模块也可以提供自己的参数。这些参数包括：min_deposit：最低存款押金min_initial_deposit_ratio：最低初始化存款押金，发起提议时通过的存款max_deposit_period：存款最大持续时间voting_period：投票持续时间quorum：法定人数，参与投票的权重比例，低于这个比例的投票无效threshold：阈值：同意的票所占比例veto_threshold：否决阈值，否决的票所占比例一般来说，模块的参数更新消息为/cosmos.<模块名称>.v1.MsgUpdateParams，比如治理模块的参数更新消息为/cosmos.gov.v1.MsgUpdateParams之前有params模块，现在已经删除，之前cosmos采用消息/cosmos.params.v1beta1.ParameterChangeProposal来统一更新模块参数，现在各个模块自己提供消息接口三、流程1、存款阶段用户发起提案之后，开启存款阶段，对于想要进入下一个阶段的提案，需要在指定时间内存入足够押金。提案的提交方不一定自己存入押金，其他人愿意支付也可以。任何代币持有者都可以发起提案，也可以为提案存入押金2、投票阶段如果提案在指定时间内满足最低存款要求，那么立刻进入投票阶段，在此期间，代币持有人可对该提案进行投票，有4个投票选项：支持、反对、弃权、否决提案。只有权益币有投票权，没有委托质押的币投票无效投票时一币一票，委托的币越多，投票的权重越大投票时不会损失或者锁定币，只会根据当前用户质押的币计算投票权重委托者可以继承验证者的投票，除非委托者自己有过投票。如果委托者自己投票的话，将会覆盖验证者的投票3、执行阶段提案被接受至少需要满足如下条件：法定人数：在投票结束的时候，超过指定数量的权益代币需要参与投票阈值：超过指定比例的参与投票的代币需要支持该提案否决阈值：低于指定比例的参与投票的代币对最终决定选择了否决提案如果在投票阶段结束后没有满足以上条件，则提案无法通过，如果提案被接受，提案中的消息将被执行如果提案被批准或拒绝，那么提案的押金将会自动退回各自的存款人；如果提案被否决，押金将被销毁；如果存款阶段结束时未达到最低存款需求，押金将被销毁四、命令行接口运行一个测试链，并且以修改gov模块参数为例1、准备提案json文件chaind tx gov draft-proposal进入提案交互模式，先选择其他类型再选择/cosmos.gov.v1.MsgUpdateParams消息接下来按提示输入提案信息和存入押金的数量，下面是控制台输出示例✔ other ✔ /cosmos.gov.v1.MsgUpdateParams Enter proposal's title: a Enter proposal's authors: a Enter proposal's summary: a Enter proposal's details: a Enter proposal's proposal forum url: http://a.a Enter proposal's vote option context: a Enter proposal deposit: 1000stake ✔ Enter msg's authority: cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn The draft proposal has successfully been generated. Proposals should contain off-chain metadata, please upload the metadata JSON …

cosmos 运行
type: item
date: 2023-07-05T13:48:00+00:00
description: 运行基于cosmos sdk开发的区块链程序一、环境操作系统：linuxgo版本：1.20.4以上ignite版本：0.27.1以上二、约定开发区块链应用程序可以参考文档ignite为了方便运行go语言程序，需要将目录$HOME/go/bin/加入到环境变量PATH里面可以在项目根目录运行ignite chain build命令来生成二进制程序（通常放到目录$HOME/go/bin/）为了方便解说，可以为区块链程序统一起个别名，例如：alias chaind=gaiad程序可以使用-h选项来查看更多配置参数，为了简单尽量使用了默认参数一般来说基于cosmos sdk开发的区块链，如果项目名称为appname，那么默认的程序和工作目录分别是appnamed和$HOME/.appname，默认的链id为appname三、节点配置1、初始化chaind init [moniker]命令创建节点工作目录，moniker是自定义的节点名称，生成默认配置文件、基础创世文件和随机节点密钥，目录主要包括以下文件├── config │ ├── app.toml # 应用程序相关的配置文件 │ ├── config.toml # CometBFT相关配置文件 │ ├── genesis.json # 创世文件 │ ├── node_key.json # p2p协议中用于节点身份验证的私钥 │ └── priv_validator_key.json # 在共识协议中用作验证节点的私钥 └── data # 节点使用的数据存储目录--home string：自定义工作目录--chain-id string：自定义创世文件中的链id--staking-bond-denom string：自定义质押币名称2、账户chaind keys add [name]命令创建新的密钥，name是密钥名称，可以重复执行创建多个不同的账户--keyring-backend string：自定义密钥后端，参考文档keyring--keyring-dir string：自定义密钥文件存放目录3、创世账户chaind add-genesis-account [address_or_key_name] [coin][,[coin]] 命令添加账户到创世文件中，address_or_key_name是之前创建的密钥名称或任意账户地址，coin是资产（例如1000个质押币1000stake），可以重复执行配置多个创世账户4、创世交易chaind gentx [key_name] [amount]命令构造并签名创世交易，key_name是之前创建的密钥名称，amount只能是质押币（至少是1000000000stake），交易内容是质押账户一定数量质押币来成为创世验证者--pubkey string：自定义节点公钥（默认由工作目录中priv_validator_key文件确定）--node-id string：自定义节点id（默认由工作目录中node_key.json文件确定）5、创世文件chaind collect-gentxs命令将创世交易写入到创世文件中，所有验证者签署交易后，由其中一个收集齐全后执行生成最终的创世文件--gentx-dir string：自定义创世交易目录6、启动节点chaind start命令将启动区块链节点，如果在一台电脑上运行多个节点需要分配端口避免端口冲突--home string：自定义节点工作目录--p2p.laddr string：默认tcp://0.0.0.0:26656--rpc.laddr string：默认tcp://127.0.0.1:26657--grpc.address string：默认0.0.0.0:9090--grpc-web.address string：默认0.0.0.0:9091--rpc.pprof_laddr string：默认0.0.0.0:6060--p2p.persistent_peers：持久的对等节点（逗号分割，ID@host:port）--p2p.seeds：种子节点（逗号分割，ID@host:port）除了通过命令行设置参数，也能通过修改节点配置文件（工作目录中的config/config.toml文件），例如：# persistent_peers = "[validator_address]@[ip_address]:[port],..." persistent_peers = "58811401b7b84caebea3cf674577a879dc53fdb1@127.0.0.1:26656"7、查询chaind tendermint show-validator：节点公钥chaind tender…