Skycoin: README.md

天空币是下一代的加密货币。

天空币解决了比特币很多需要解决的问题。

天空币是暗网计划和权利再分配计划的一小部分。

+++++++++++++++++++++++++++++++++

相关链接:

官方网站  https://www.skycoin.net/

官方博客  https://www.skycoin.net/blog/

相关资料  https://www.skycoin.net/docs/

区块链浏览器  https://explorer.skycoin.net/

电报群  https://t.me/skycoindev

+++++++++++++++++++++++++++++++++

目录列表:


-日志

-安装

--GO语言1.10 安装及设置

--获取skycoin

--命令行运行skycoin

--显示skycoin节点选项

--选择运行skycoin

--Docker 图像

--建立个人图像

-API文档

--REST API

--JSON-RPC 2.0 API

--Skycoin 命令行接口

-Skycoin与你的应用集成

-为网络贡献一个节点

-URI规范

-开发项目

--模块

--客户端库

--运行测试

-运行集成测试

--稳定集成测试

--现场集成测试

--调试集成测试

--更新黄金文件集成测试数据

-格式化

-代码规范

-依赖项管理

-钱包GUI开发

-发布

--预发布测试

--创建发布版本

--发布签名

++++++++++++++++++++++++++++++++++

目录

CHANGELOG.md  (文本文件)

安装

Skycoin 支持 go1.10+ 版本

Go 1.10+安装与配置

INSTALLATION.md  (文本文档)


使用GO安装skycoin

go get github.com/skycoin/skycoin/...

它会下载

github.com/skycoin/skycoin

$GOPATH/src/github.com/skycoin/skycoin

你也可以直接clone仓库,通过使用:

git clone https://github.com/skycoin/skycoin

但它必须被克隆至该路径:

$GOPATH/src/github.com/skycoin/skycoin


通过命令行运行skycoin

cd $GOPATH/src/github.com/skycoin/skycoin
make run

现实skycoin节点选项

cd $GOPATH/src/github.com/skycoin/skycoin
make run-help

运行节点选项

实例:

cd $GOPATH/src/github.com/skycoin/skycoin
make ARGS="--launch-browser=false -data-dir=/custom/path" run

Docker 镜像

通过Docker用最快的方法使用skycoin

$ docker volume create skycoin-data
$ docker volume create skycoin-wallet
$ docker run -ti --rm \
    -v skycoin-data:/data/.skycoin \
    -v skycoin-wallet:/wallet \
    -p 6000:6000 \
    -p 6420:6420 \
    skycoin/skycoin

这个镜像有一个skycoin用户的守护进程运行着,而且是UID和GID 10000。 当你在安装的时候,容器会改变他们的所属者标识。所以你必须意识到是否你正在一个已经存在的卷,它们属于10000。

容器会运行一些默认的选项,但是你可以改变他们通过

docker run

命令。

下面的例子将会展示给你可得到的选项:

docker run --rm skycoin/skycoin -help

仪表盘入口: 

http://localhost:6420

API入口 :

http://localhost:6420/version

构建你自己的镜像

Building your own images. (文本文档)

开发镜像

为了更加容易的开发 skycoin,提供了

skycoin/skycoindev-cli docker image

它附带了编译器、语法规范、调试工具、VIM编辑器以及其他的工具。


API 文档

-REST API

REST API Documentation (文本文档)

-JSON-RPC 2.0 API

(已弃用,避免使用 )

JSON 2.0 RPC API Documentation (文本文档)

- skycoin 命令行接口

CLI command API  (文本文档)


在你的应用中集成skycoin

Skycoin 集成文档 (文本文档)


为网络贡献一个节点

添加你节点的ip和端口:

ip:port   

到peer.txt文件中 。

这个文件会定期上传到:

https://downloads.skycoin.net/blockchain/peers.txt

并用于生成客户的种子。

注意: 不要添加Skywire节点 到peers.txt

只添加具有高运行时间的Skycoin节点和静态IP地址(就好像是托管在VPS上的Skycoin节点)。

URI 规范

Skycoin URI遵循与Bitcoin的BIP21规定相同的规则。他们使用相同的字段,除了添加一个可选的小时参数,指定币时。

https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki

(BIP21规定 ,文本文档)

Skycoin URIs 示例 :

skycoin:2hYbwYudg34AjkJJCRVRcMeqSWHUixjkfwY

skycoin:2hYbwYudg34AjkJJCRVRcMeqSWHUixjkfwY?amount=123.456&hours=70

skycoin:2hYbwYudg34AjkJJCRVRcMeqSWHUixjkfwYamount=123.456&hours=70&label=friend&message=Birthday%20Gift

skycoin:2hYbwYudg34AjkJJCRVRcMeqSWHUixjkfwY?amount=123.456&hours=70&label=friend&message=Birthday%20Gift


开发

我们有两个分支: master 和 develop

develop是默认的分支, 并将有最新的代码。

master将始终同步当前稳定的版本,并应对应最新的发布标签,发布在网站上。


模块

api  :  REST API接口
api/webrpc : JSON RPC 2.0 API [已否决]
cipher : 密码库
cli :CLI 库
coin: 区块链数据结构
daemon: 顶层应用程序管理器,组件包含(网络、数据库、钱包)
daemon/gnet:网络库
daemon/pex: peer 管理
visor: 顶层区块链数据层
visor/blockdb: 底层区块链数据层
visor/historydb: 历史区块链元数据所属底层区块链数据
wallet: 钱包文件管理

客户端库

从其他编程语言导出用于使用的skycoin的核心功能。


lib/cgo/: libskycoin C 客户端库  ( 文本文档 )

有关进一步的细节,运行:

make docs

生成文档并读取相应的自述文件和 API 引用。


运行测试

make test

运行集成测试


有 CLI 和 HTTP API 接口的集成测试。他们有两种运行模式, "stable"稳定 和 "live"实况。


稳定集成测试会使用一个skycoin守护进程,它的区块链会同步到一个特定的点,并且禁用网络,所以内部状态不会改变。


实况集成测试应该针对启用同步网络的同步节点运行。


稳定集成测试 :

make integration-test-stable

或者:

./ci-scripts/integration-test-stable.sh -v -w

-W选项, 运行钱包集成测试。

-V选项,显示详细日志。

时实集成测试

时实集成测试是针对一个实时运行的Skycoin节点运行的,所以在运行测试之前,我们需要启动一个Skycoin节点。

在Skycoin节点启动后,运行以下命令启动实时测试:

./ci-scripts/integration-test.live.sh -v

除了钱包相关的测试之外,上面的命令将运行所有的测试。

要运行钱包测试, 我们需要手动指定一个钱包文件, 它必须有至少2 coin和 256 coinhours, 它也必须是已加载的节点。

我们可以通过设置两个环境变量来指定钱包:

WALLET_DIR
WALLET_NAME

Wallet_dir表示钱包目录的绝对路径,Wallet_name表示钱包文件名。

注意: WALLET_DIR 仅用于 CLI 集成测试。GUI 集成测试使用节点的配置的钱包目录, 它可以在运行节点时用钱包-dir 控制。


如果钱包是加密的, 也设置:

WALLET_PASSWORD

例如:

export WALLET_DIR="$HOME/.skycoin/wallets"
export WALLET_NAME="$valid_wallet_filename"
export WALLET_PASSWORD="$wallet_password"

然后使用以下命令运行测试:

make integration-test-live

或者

./ci-scripts/integration-test-live.sh -v -w

调试集成测试

运行特殊测试用例:

运行所有测试来检查我们真正关心的测试是否正常工作是很烦人的, 很浪费时间。

有一个选项:-R,它可以用来运行特定的测试用例。例如:如果我们只想测试TestStestAdvestSaltSalk并查看结果,我们可以运行:

./ci-scripts/integration-test-stable.sh -v -r TestStableAddressBalance

在集成测试数据中更新黄金文件:

金文件预计从CLI或HTTP API保存到磁盘的数据响应。当测试运行时,将它们的输出与黄金文件进行比较。


金色的更新文件,使用-U选项:

./ci-scripts/integration-test-live.sh -v -u
./ci-scripts/integration-test-stable.sh -v -u

我们还可以用-R选项更新特定的测试用例的黄金文件。

格式化

所有. go源文件应格式化 goimports。您可以执行以下操作:

make format

代码风格

安装依赖项:

make install-linters

运行依赖:

make lint

依赖管理

依赖关系用DEP管理。

安装dep:

go get -u github.com/golang/dep

DEP供应商将所有依赖项转换为库。

如果更改依赖项,则需要根据DEP确保对它们进行更新。

使用 dep help 可得到有关 vendoring 特定版本的依赖项的说明, 或者更新它们。

当更新或初始化时,DEP将找到编译的依赖项的最新版本。

实例: 

初始化所以依赖项:

dep init

更新所有依赖项:

dep ensure -update -v

添加单个依赖项 (最新版本):

dep ensure github.com/foo/bar

添加单个依赖项(更具体的版本),或降级现有的依赖项:

dep ensure github.com/foo/bar@tag

配置模式


有4种配置模式,您可以运行一个Skycoin节点:

开发桌面守护进程

服务器守护进程

电子桌面客户端

独立桌面客户端

开发桌面守护进程模式,此模式通过run.sh配置。

$ ./run.sh


服务器守护进程模式

Skycoin节点的默认设置是为服务器守护进程选择的,它通常是从源运行的。这种模式通常是以安全选项运行的,尽管是-disable-csrf是正常的,默认情况下它是启用的。

$ go run cmd/skycoin/skycoin.go



电子桌面客户端模式

此模式通过电子electron-main.js

独立运行的桌面客户端模式

此模式是通过使用STANDALONE_CLIENT构建标记编译而配置的。配置在

cmd/skycoin/skycoin.go

钱包 GUI 开发

已编译的钱包源应签入到库中, 以便其他人不需要安装节点来运行软件。

执行此操作的说明:

(Wallet GUI Development README 文本文档)


发布

0.如果主分支具有不在开发中的提交(例如由于应用于主控程序的修复),则将主控合并到开发中。


1.编译  src/gui/static/dist/  确保它的数据是最新的(参见钱包 GUI 开发手册)


2. 更新版本中的所有版本字符串(GRIP为新版本)


3. 更新日志CHANGELOG.md  : 将 "未发布 " 更改移动到版本并添加日期


4. 合并这些更改到devlop

5. 遵循预发布测试中的步骤

6. 制定一个PR 将devlop 合并到master 分支

7.审核PR并将其合并

8.使用版本号标记主分支。版本标签以 v 开头, 例如 v0.20.0。在标签上签名。如果您在 github 中有您的 "公钥" 密钥, 则在 github 网站上创建一个发布将自动标记该版本。它可以用 git 标记的命令行标记-作为

git tag -as v0.20.0
$COMMIT_ID

但 Github 不会将其识别为 "发布"。

9. 确保客户端从主分支正确运行

10. 发布版本是由特拉维斯创建和上传的。手动完成,要手动执行此操作, 请签出主分支并按照 "创建版本" 生成说明进行操作。

如果合并到主机后发现问题,请重新启动并增加第三版本号。例如,V0.20.0变为V0.20.1,用于较小的修复。


预发布测试

在发布之前执行这些操作:

make check
make integration-test-live

(参见实时集成测试文档)都使用未加密和加密的钱包。

go run cmd/cli/cli.go checkdb

同步节点

在所有操作系统平台中,确保客户端从命令行正确运行。

./run.sh

构建发布,确保电子客户端在Windows、Linux和Mac OS上正常运行。

- 使用没有钱包或数据库的干净数据目录从零开始同步,并验证钱包安装向导。

- 从种子加载非零余额测试钱包确认钱包加载工程

- 将硬币发送到另一个钱包确认支出工作

- 重新启动客户端, 确认它已正确重载


创建发布版本

Create Release builds (文本文档)


发布签名

发行版使用此 PGP 密钥进行签名:

0x5801631BD27C7874

这个键的指纹是:

pub  ed25519 2017-09-01 [SC] [expires: 2023-03-18]
      10A7 22B7 6F2F FE7B D238  0222 5801 631B D27C 7874
uid                      GZ-C SKYCOIN <token@protonmail.com>
sub  cv25519 2017-09-01 [E] [expires: 2
Keybase.io账户: https://keybase.io/gzc


关注项目: https://www.torproject.org/docs/verifying-signatures.html.en

如果您不能或不想从 keyserver 导入密钥, 则在库中可以使用签名密钥: gz-c.asc  (文本文档)


版本及其签名可以在:
https://github.com/skycoin/skycoin/releases


生成PGP密钥、发布它、签署标签和二进制文件的指令:

https://github.com/skycoin/skycoin/blob/develop/README.md
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,967评论 3 119
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 23,615评论 8 183
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 今天,我写完作业,坐在沙发上玩着妈妈的手机。 我把手机点开了“百度”,看看里面有什么天大的新闻,可突然有一个标题吸...
    施佳言阅读 122评论 0 1
  • 真正的幸福的婚姻生活是怎么样的呢? 比较困惑 虽然我是一个已婚之人,然而幸福的婚姻是什么样子的?我一直都在问自己:...
    yoyo的小小妹阅读 113评论 0 0