1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
Arching Kaos Tools
==================
Description
-----------
Warning: this is a bunch of tools that may not make sense. :)
This is an installable repo which provides various tools for running Arching Kaos and using it.
Changes are mentioned in `git log` of the repo, as well as in ./CHANGELOG file.
Requirements
------------
Some Linx machine which has installed bash or zsh, gpg, wget, curl, git and which.
Other shells maybe are working.
- bash (v5.1.8) or zsh (v5.8)
- gpg (v2.3.4)
- wget (v1.21.2)
- curl (v7.79.1)
- git (v2.34.1)
- which (v2.21)
- jq (v1.6)
`json_pp` is also used put you cat remove it and change it with `jq`
Clone
-----
Write on your bash/zsh:
```
git clone https://github.com/arching-kaos/arching-kaos-tools
```
Install
-------
```
cd arching-kaos-tools
sh install.sh
```
Update
------
```
git pull
./update.sh
```
Examples
--------
### Add a news article ( `news add` )
You could use ZCHAIN with NEWS model. Or MIXTAPE model, or make your own.
``` bash
$ news create
```
This would pop up a vim editor for you to write a news article or whatever is text or markdown format with a title.
Saving the file, will save it locally, add it to IPFS, sign it, pack detached signature with metadata on a JSON object. Then a block will be created packing your GPG public key, the news/add action with the JSON object and a detached signature of this, timestamp and finally an entry for the previous *zblock*. After that (!) we finally write this as a json object, add it to IPFS, sign it and pack a *zblock*. That, is published over our IPNS zchain key.
Other options... let's try help!
``` console
$ news help
ak-news-cli
--------------
#TODO
All you need to know is that there are two options available:
help Prints this help message
index Prints an indexed table of your news files
import <file> #TODO
add <file> Creates a data file from the news file you point to
create Vim is going to pop up, you will write and save your
newsletter and it's going to be saved
```
Clearly there is a TODO item. Import is not working so avoid it, or fix it.
Add is nice, you can add an already existing file directly. `news` is the second module after `mixtape`. Both modules need refactoring but they work at a level that someone can be productive with these tools.
### Explore chains ( `enter` )
You can view your zchain as a JSON object using `enter`. There are some flags in order to either view other zchains or change the depth of view ( includes or ignores data object and action ).
``` console
$ enter -h
enter - Crawl an arching kaos chain
-----------------------------------
Usage:
--help, -h Print this help and exit
--chain <ipns-link>, -n <ipns-link> Crawl specified chain
--show-zblocks-only, -z Show only zblocks
--no-verify, -nV Don't verify signatures
Note that combined flags don't work for now
Running with no flags crawls your chain
```
Podman (or Docker)
------------------
There is a ContainerFile that you can use to build an image which you can then deploy in a container.
Use:
```
podman build -f ContainerFile -t arching-kaos-tools .
```
TODO
----
Next things to come are:
- zblock manipulator to fix wrong previous block references and repack zblocks.
- zchain rebase-like procedure to move the zblocks to another seed or set another previous block (e.g. join chains)
- Clean up installation and filesystem usage
- Log rotate to gzip archives
- Filters for log searching for IPFS hashes or names
- Use of IPFS file system to store/pin sub chains, previous chains or other chains
Concepts under thought
----------------------
- Base chain, derived from personal ones.
- Daemon to monitor chains' states, update and sign new zblocks.
- Find a minimum agreement of what is valid or not. (important)
- Spam defence (e.g. how to protect the network from abuse cases) (important)
- Reduce size of all parts of chain (stringify JSON) (improvement)
|