Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
E
eosio-ipfs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Peter Cheng
eosio-ipfs
Commits
5f765317
Commit
5f765317
authored
Jun 08, 2019
by
Peter Cheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改說明文件
parent
b774d3ca
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
174 additions
and
0 deletions
+174
-0
README.md
README.md
+174
-0
No files found.
README.md
0 → 100644
View file @
5f765317
# eosio-ipfs
EOSIO + IPFS 私鏈快速生成器
## 資料夾結構
## 必須套件
本系統透過Docker與Docker-Compose生成環境,請先設置好EOSIO + IPFS
## EOSIO 私鏈架設流程
1.
進入容器
```
docker exec -it nodeos bash
```
2.
新增錢包
```
cleos wallet create --file ~/wallet.passwd
```
3.
開啟錢包
```
cleos wallet open
```
4.
查看目前己開啟錢包
```
cleos wallet list
```
5.
解鎖錢包,密碼在~/wallet.passwd檔案中
```
cleos wallet unlock
```
6.
匯入設定檔中私鑰,私鑰在/mnt/dev/config/config.ini中,裡面的signature-provider,例如我這邊私鑰是5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
```
cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
```
7.
新增二把含以上的公鑰,等等新增會員時要用到
```
cleos wallet create_key
```
8.
查看可用的公私鑰
```
cleos wallet private_keys
```
9.
新增會員帳號
```
cleos create account eosio [會員帳號] [會員公鑰]
```
10.
查看會員可用資源
```
cleos get account [會員帳號]
```
## 撰寫 Hello World 智能合約
1.
Hello World
```
#include <eosio/eosio.hpp>
using namespace eosio;
class [[eosio::contract]] helloworld : public contract {
public:
using contract::contract;
[[eosio::action]]
void hi(name user) {
print("Hi! ", user, " Hello World!!!");
}
};
```
2.
編譯智能合約
```
eosio-cpp -abigen -o [智能合約所在資料夾]/helloworld.wasm [智能合約所在資料夾]/helloworld.cpp
```
3.
查看可用公鑰
```
cleos wallet keys
```
4.
新增帳號發布智能合約,EOS當中,一個帳號只能發佈一份智能合約
```
cleos create account eosio [會員帳號] [會員公鑰] -p eosio@active
```
5.
發佈智能合約
```
cleos set contract [智能合約名稱] [智能合約在屬資料夾] -p [會員帳號]@active
```
6.
調用智能合約,調用智能合約與上合約的不能同一人
```
cleos push action [智能合約名稱] [調用的 Action] '[[代入參數]]' -p [會員帳號]@active
```
## 撰寫資料長期儲存智能合約
1.
上傳打卡鐘資料
```
#include <eosio/eosio.hpp>
using namespace eosio;
class [[eosio::contract("punchclock")]] punchclock : public eosio::contract {
public:
punchclock(name receiver, name code, datastream<const char*> ds): contract(receiver, code, ds) {}
[[eosio::action]] //新增資料
void add(std::string punchTime, std::string doorNo, std::string cardNo, std::string identify, name user) {
require_auth(user);
punchListIndex lists(get_self(), get_first_receiver().value);
lists.emplace(user, [&](auto& row) {
row.id = lists.available_primary_key();
row.creater = user.value;
row.punchtime = punchTime;
row.doorno = doorNo;
row.cardno = cardNo;
row.identify = identify;
});
}
[[eosio::action]] //刪除資料
void remove(uint64_t id, name user) {
require_auth(user);
punchListIndex lists(get_self(), get_first_receiver().value);
auto iterator = lists.find(id);
check(iterator != lists.end(), "Record does not exist");
lists.erase(iterator);
}
[[eosio::action]]
void get(std::string identify, name user) {
require_auth(user);
punchListIndex lists(get_self(), get_first_receiver().value);
auto iterator = lists.begin();
while(iterator != lists.end()) {
if (identify == iterator->identify) {
print(iterator->identify);
}
}
}
private:
struct [[eosio::table]] punchList { //punchList資料表
uint64_t id;
uint64_t creater;
std::string punchtime;
std::string doorno;
std::string cardno;
std::string identify;
uint64_t primary_key() const { return id; }
uint64_t get_secondary_1() const { return creater; }
};
typedef eosio::multi_index<"punchclock"_n, punchList,
indexed_by<"bycreater"_n, const_mem_fun<punchList, uint64_t, &punchList::get_secondary_1>>
> punchListIndex;
};
```
2.
調用智能合約
```
cleos push action punchclock add '["2019-06-08 11:28:00", "A01", "ABCDEFG", "00001", "bob"]' -p bob@active
```
3.
查看線上資料庫
```
root@a9e45804cee8:~/contracts# cleos get table [會員帳號] [上鏈的會員帳號] [資料表名]
```
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment