매뉴얼을 그대로 따라 했을 때의 오류 입니다 This is an error when following the manual as it is

설정 파일입니다.

Copyright(c) 2018 Gluwa, Inc.

This file is part of Creditcoin.

Creditcoin is free software: you can redistribute it and/or modify

it under the terms of the GNU Lesser General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License

along with Creditcoin. If not, see https://www.gnu.org/licenses/.

version: “3.7”

services:

settings-tp:
image: hyperledger/sawtooth-settings-tp:1.0
container_name: sawtooth-settings-tp-default
depends_on:
- validator
entrypoint: settings-tp -C tcp://validator:4004
stop_signal: SIGKILL
logging:
driver: “json-file”
options:
max-file: “5”
max-size: “10m”

validator:
image: gluwa/creditcoin-validator:latest
container_name: sawtooth-validator-default
volumes:
- type: volume
source: validator-block-volume
target: /var/lib/sawtooth/
- type: volume
source: validator-key-volume
target: /etc/sawtooth/keys/
expose:
- 4004
- 8800
ports:
- 4004:4004
- 8800:8800
secrets:
- source: validator_logging
target: /etc/sawtooth/log_config.toml
entrypoint: |
bash -c ‘if [[ ! -f /etc/sawtooth/keys/validator.pub ]]
then
echo “First run”
sawadm keygen
fi
sawtooth-validator -vv
–endpoint tcp://111.111.111.11:8800 \ <-(my ip)
–bind component:tcp://eth0:4004
–bind network:tcp://eth0:8800
–peering dynamic
–seeds tcp://creditcoin-node.gluwa.com:8800
–seeds tcp://creditcoin-gateway.gluwa.com:8800
–seeds tcp://118.27.14.197:8800
–seeds tcp://118.27.20.120:8800
–seeds tcp://160.251.9.11:8800
–seeds tcp://160.251.9.75:8800
–seeds tcp://160.251.10.137:8800
–seeds tcp://160.251.13.5:8800
–maximum-peer-connectivity 5
–scheduler parallel’
stop_signal: SIGKILL
logging:
driver: “json-file”
options:
max-file: “5”
max-size: “100m”

rest-api:
image: hyperledger/sawtooth-rest-api:1.0
container_name: sawtooth-rest-api-default
ports:
- 8008:8008
secrets:
- source: rest_api_logging
target: /etc/sawtooth/log_config.toml
depends_on:
- validator
entrypoint: sawtooth-rest-api -C tcp://validator:4004 --bind rest-api:8008
stop_signal: SIGKILL
logging:
driver: “json-file”
options:
max-file: “5”
max-size: “10m”

processor:
image: gluwa/creditcoin-processor:latest
container_name: creditcoin-processor
depends_on:
- validator
- settings-tp
- rest-api
entrypoint: |
bash -c ‘rest_status=$$(curl -s --head -w %{http_code} http://rest-api:8008/state?address=000000 -o /dev/null)
while [ “$$rest_status” != “200” ]
do
echo $$rest_status
sleep 2
rest_status=$$(curl -s --head -w %{http_code} http://rest-api:8008/state?address=000000 -o /dev/null)
done
./ccprocessorLinux.out tcp://validator:4004 tcp://gateway:55555 http://rest-api:8008
stop_signal: SIGKILL
logging:
driver: “json-file”
options:
max-file: “5”
max-size: “10m”

gateway:
image: gluwa/creditcoin-gateway:latest
container_name: creditcoin-gateway
expose:
- 55555
ports:
- 55555:55555
secrets:
- source: gateway_config
target: /home/Creditcoin/Gateway/appsettings.json
entrypoint: ./ccgateway
stop_signal: SIGKILL
logging:
driver: “json-file”
options:
max-file: “5”
max-size: “10m”

secrets:
gateway_config:
file: ./gatewayConfig.json
rest_api_logging:
file: ./rest_api-log_config.toml
validator_logging:
file: ./validator-log_config.toml

volumes:
validator-block-volume:
validator-key-volume:

=========================

gatewayConfig 설정 파일입니다.
{
“bindIP”: “0.0.0.0”,
“bitcoin”: {
“rpc”: “”,
“credential”: “<rpc_username:rpc_password>”
},
“ethereum”: {
“creditcoinContract”: “0xa3ee21c306a700e682abcdfe9baa6a08f3820419”,
“creditcoinContractAbi”: “[{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolders’,‘type’:‘address’},{‘name’:‘amounts’,‘type’:‘uint256’}],‘name’:‘recordSales730Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘VestingStartDate’,‘outputs’:[{‘name’:‘’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘name’,‘outputs’:[{‘name’:‘’,‘type’:‘string’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘spender’,‘type’:‘address’},{‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘approve’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘totalSupply’,‘outputs’:[{‘name’:‘amount’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf365Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘value’,‘type’:‘uint256’},{‘name’:‘sighash’,‘type’:‘string’}],‘name’:‘exchange’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘from’,‘type’:‘address’},{‘name’:‘to’,‘type’:‘address’},{‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘transferFrom’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf183Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘decimals’,‘outputs’:[{‘name’:‘’,‘type’:‘uint8’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolders’,‘type’:‘address’},{‘name’:‘amounts’,‘type’:‘uint256’}],‘name’:‘recordSales1095Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf365Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘burn’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf2190Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolders’,‘type’:‘address’},{‘name’:‘amounts’,‘type’:‘uint256’}],‘name’:‘recordSales183Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’},{‘name’:‘numCoins’,‘type’:‘uint256’}],‘name’:‘recordSale365Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf730Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘owner’,‘type’:‘address’}],‘name’:‘balanceOf’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:,‘name’:‘finalizeSales’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘from’,‘type’:‘address’},{‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘burnFrom’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf2190Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf730Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘symbol’,‘outputs’:[{‘name’:‘’,‘type’:‘string’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’},{‘name’:‘numCoins’,‘type’:‘uint256’}],‘name’:‘recordSale183Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘to’,‘type’:‘address’},{‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘transfer’,‘outputs’:[{‘name’:‘success’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘creditcoinSalesLimit’,‘outputs’:[{‘name’:‘’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘vestedBalanceOf1095Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘creditcoinLimitInFrac’,‘outputs’:[{‘name’:‘’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’},{‘name’:‘numCoins’,‘type’:‘uint256’}],‘name’:‘recordSale2190Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’},{‘name’:‘numCoins’,‘type’:‘uint256’}],‘name’:‘recordSale730Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf1095Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘owner’,‘type’:‘address’},{‘name’:‘spender’,‘type’:‘address’}],‘name’:‘allowance’,‘outputs’:[{‘name’:‘remaining’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:,‘name’:‘startVesting’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolders’,‘type’:‘address’},{‘name’:‘amounts’,‘type’:‘uint256’}],‘name’:‘recordSales2190Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:true,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’}],‘name’:‘purchasedBalanceOf183Days’,‘outputs’:[{‘name’:‘balance’,‘type’:‘uint256’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:true,‘inputs’:,‘name’:‘IsSalesFinalized’,‘outputs’:[{‘name’:‘’,‘type’:‘bool’}],‘payable’:false,‘stateMutability’:‘view’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolders’,‘type’:‘address’},{‘name’:‘amounts’,‘type’:‘uint256’}],‘name’:‘recordSales365Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘constant’:false,‘inputs’:[{‘name’:‘tokenHolder’,‘type’:‘address’},{‘name’:‘numCoins’,‘type’:‘uint256’}],‘name’:‘recordSale1095Days’,‘outputs’:,‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘function’},{‘inputs’:[{‘name’:‘creditcoinFoundation’,‘type’:‘address’},{‘name’:‘devCost’,‘type’:‘address’}],‘payable’:false,‘stateMutability’:‘nonpayable’,‘type’:‘constructor’},{‘payable’:true,‘stateMutability’:‘payable’,‘type’:‘fallback’},{‘anonymous’:false,‘inputs’:[{‘indexed’:true,‘name’:‘from’,‘type’:‘address’},{‘indexed’:false,‘name’:‘value’,‘type’:‘uint256’},{‘indexed’:true,‘name’:‘sighash’,‘type’:‘string’}],‘name’:‘Exchange’,‘type’:‘event’},{‘anonymous’:false,‘inputs’:[{‘indexed’:true,‘name’:‘from’,‘type’:‘address’},{‘indexed’:false,‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘Burnt’,‘type’:‘event’},{‘anonymous’:false,‘inputs’:[{‘indexed’:true,‘name’:‘from’,‘type’:‘address’},{‘indexed’:true,‘name’:‘to’,‘type’:‘address’},{‘indexed’:false,‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘Transfer’,‘type’:‘event’},{‘anonymous’:false,‘inputs’:[{‘indexed’:true,‘name’:‘owner’,‘type’:‘address’},{‘indexed’:true,‘name’:‘spender’,‘type’:‘address’},{‘indexed’:false,‘name’:‘value’,‘type’:‘uint256’}],‘name’:‘Approval’,‘type’:‘event’}]”,
“rpc”: “https://mainnet.infura.io/v3/06343434443344343434346a
indent preformatted text by 4 spaces
},
“ethless” : {
“rpc”: “https://mainnet.infura.io/v3/06d8343434343434433456a
},
“erc20”: {
“rpc”: “https://mainnet.infura.io/v3/06d8734343434434343056a
}
}

==================================================--------------------
설정이 끝나고 나서 PowerShell window 에서
docker-compose -f docker-compose.yaml down
docker-compose -f docker-compose.yaml up -d
docker-compose -f docker-compose.yaml up

이렇게 해주었습니다.

설정이 잘못 된 부분이 있을까요?
Is there any wrong setting?

  1. Re: “docker-compose -f docker-compose.yaml up -d
    docker-compose -f docker-compose.yaml up”

Only the first command is needed; not the second one.
‘docker-compose -f … up -d’ runs Creditcoin software in the background, ie, log messages won’t appear. To view log messages, run this command in a PowerShell window:
docker logs -f sawtooth-validator-default

  1. Re:
    ports:
    - 4004:4004
    - 8800:8800

Port numbers must be inside quotes:
- “4004:4004”
- “8800:8800”

The setting seems to be fine except for what glenn said above, and it seems that the peer search is not working well.

If the peers specified by --seeds are busy or their 8800 port is closed, your Validator won’t connect to them. Try these endpoints:
158.247.196.52:8800
107.155.108.175:8800
158.247.207.209:8800

thx glenn I’ll try it

It seems that the phenomenon of forks continues to occur as the network becomes crowded around the difficulty level of 30~32.

1 Like

The updated server and client require docker-compose.yml, gateway Config,clientConfig,json code. It seems to be different from the guide, so it is very different.

Creditcoin Miner's Manual - Creditcoin Documentation is the best source for up-to-date information. If you have encountered any issues with these docs or have suggestions for improving them, please let us know.