win10, 64비트 시스템 완성go-ethereum1.8.22 개인 체인 구성 및 관련 내용

이 기기의 설정은 Windows10 기업판 64비트 시스템으로 다른 것들은 주의해야 할 점이 없는 것 같다
도입부
선생님께서 주신 py 스크립트가 실행되지 않습니다. 검색을 통해 리퀘스트에 문제가 생겼습니다.디버깅을 통해 go-ethereum을 성공적으로 설치하여 스크립트가 순조롭게 실행되었습니다.
go-ethereum 설치 및 실행 요점
  • go-ethereum의github는https://github.com/ethereum/go-ethereum, 다운로드하여 golang과 gcc로 컴파일할 수 있습니다.있다https://geth.ethereum.org/downloads/설치 패키지를 직접 다운로드합니다.여기서 주의해야 할 것은.만약 당신이 64비트 시스템이라면 반드시 64비트 버전을 설치해야 한다. 구체적인 원인은 뒤에서 이야기할 것이다.
  • 개인 체인의 간편함을 위주로 하고 여기에 사용할 수 있는 설정만 말한다
  • 창세 블록을 먼저 ./genesis(아무 폴더에) genesis.json(아무 이름에) 파일을 만들고 창세 블록을 생성하는 설정을 채웁니다.
  • {
        "config": {
            "chainId": 15,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
        "coinbase" : "0x0000000000000000000000000000000000000000",
        "difficulty" : "0x1000",
        "extraData" : "",
        "gasLimit" : "0xffffffff",
        "nonce" : "0x0000000000002242",
        "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
        "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
        "timestamp" : "0x00",
        "alloc": {
    		"0x0000000000000000000000000000000000000001": {"balance": "111111111"},
    		"0x0000000000000000000000000000000000000002": {"balance": "222222222"},
    		"0x0000000000000000000000000000000000000003": {"balance": "111111111"},
    		"0x0000000000000000000000000000000000000004": {"balance": "222222222"},
    		"0x0000000000000000000000000000000000000005": {"balance": "111111111"},
    		"0x0000000000000000000000000000000000000006": {"balance": "222222222"}
    	}
    }
    

    PS1: 부분 숫자는 문자열이므로 형식에 유의하십시오.PS2: 16진수는 반드시 짝수 비트가어야 한다. 예를 들어 0x00가 아니라 0x0이다.PS3: chainId는 0 0 0 0보다 큰 정수여야 합니다.
    그런 다음 루트 디렉토리에서 수행합니다.
    .\geth --datadir "./data" init ./genesis/genesis.json
    

    관건: 1.데이터dir 뒤에 있는 폴더 주소는 데이터를 저장하는 곳입니다.앞으로 모든 블록 정보는 여기에 저장될 것입니다. 초기화할 때 내용 폴더에 이전에 블록을 생성한 잔여 파일이 없어야 합니다.2. json의 주소는 현재 콘솔 위치에 상대적입니다.가능한 오류:
    Failed to write genesis block: database already contains an incompatible
    대상 폴더에 이미 다른 창세 블록이 있습니다.안의 정보를 삭제하면 된다.
  • 루트 디렉토리에서 실행
  • .\geth --rpc --rpcport 8545 --datadir "./data" --port 30399 --verbosity 1 --dev.period 1 --rpcapi "dev, eth, web3, personal, net, tx_pool, admin, miner" console 2>>eth_output.log
    

    관건: 1.rpc: rpc 프로토콜을 사용합니다.2. rpcport: rpc 감청 포트를 8545로 설정하면 이 포트는 점용할 수 없습니다.다른 프로그램은http://127.0.0.1:8545geth. 액세스3. 데이터dir: 뒤에 폴더 주소가 바짝 붙어 있습니다.안에 반드시 생성된 창세 블록이 있어야 한다.4.port: 뒤에 있는 숫자, 네트워크 감청 포트.5.verbosity: 뒤에 숫자가 뒤따르면 숫자가 1일 때 모든 오류가 금지됩니다.6.dev.period: 뒤에 숫자가 뒤따르고 1이면 엽니다.7.rpcapi: 뒤에 있는 문자열은 우리가 호출할 수 있는api입니다.8.console: 자바스크립트 console 모드를 사용합니다.자세한 내용은 go-ethereum Command Line Options 참조.
    가능한 오류:
  • Welcome to the Geth JavaScript console가 나타나면!정상적으로 콘솔 모드에 들어갔다는 뜻입니다. 일반적으로 앞에 있는 것이 모두 같은 조작이라면 여기에 문제가 없습니다.이렇게 해서 우리는 go-ethereum 개인 체인을 성공적으로 배치했다.여기에 몇 개의 개인 체인 명령을 계속 추가합니다:
  • 1. miner 명령
    miner.start()
    

    광산을 파기 시작하다.수익은coinbase 계좌에 드립니다.주의miner.start ()가true로 되돌아갈 때 채굴을 시작합니다.null로 되돌아갈 수도 있고, 실제로는 채굴을 시작합니다.광물을 파는 과정의 수량을 제어할 수 있는 숫자를 입력할 수 있습니다.
    miner.stop()
    

    채굴을 멈추다.
    miner.setEtherbase(youraccount)
    

    주 계정을 설정하고, 설정하지 않으면 광물을 채굴할 수 없습니다.
    miner.setGasPrice
    
    miner.hashrate
    

    현재 채굴한 광물을 되돌려hash속도를 계산합니다.단위는 H/s H/s H/s입니다. miner.start()를 실행할 때 다음 예외가 발생할 수 있습니다.
    Failed to generate mapped ethash dataset epoch=0 err=“MapViewOfFile: Not enough storage is available to process this command.” runtime: out of memory: cannot allocate 2147483648-byte block (2262933504 in use) fatal error: out of memory
    이것은 설치된 go-ethereum이 32비트 버전이기 때문이다.32비트의 go-ethereum을 마운트 해제하고 64비트 버전으로 바꾸면 됩니다.2. eth 명령
    eth.accounts
    

    현재 개인 체인의 계정을 보십시오.이것은 목록입니다.문자열 형식의 계정 주소를 인용할 수도 있습니다.
    eth.getBalance(youraccount)
    
    eth.accounts[0] 계좌의 잔액을 얻다.
    eth.coinbase
    

    주 계정을 조회하다.
    eth.blockNumber
    

    현재 개인 체인의 블록 수량을 조회합니다.
    eth.getBlock(str)
    

    청크 정보 조회.str는'latest'조회 최신 블록일 수도 있고'earliest'조회 초기 블록일 수도 있고'pending'조회 중인 블록일 수도 있고 블록 번호일 수도 있습니다.
    eth.sendTransaction({from:fr,to:to,value:val})
    

    거래를 개시하다.하나 youraccont 로 전송됩니다.송금계좌json, 송금계좌fr, 금액to, 단위는wei.송금 계좌는 반드시 잠금 해제 상태에 있어야 한다.3. 웹3 명령
    web3.fromWei(eth.getBalance(youraccount),"ether")
    

    4. personal 명령
    personal.newAccount("password")
    

    새 계정을 만듭니다.매개 변수는 암호의 문자열입니다.안 채워도 돼요. 이때도 비밀번호를 입력하라고 할 거예요.하지만 내용은 숨겨져 있다.이런 방식이 더 안전하다.
    personal.unlockAccount(youraccount,youraccount_passoword,duration)
    

    계정을 잠금 해제하고 두 번째 파라미터는 계정 비밀번호입니다. 채우지 않아도 됩니다. 이럴 때도 비밀번호를 입력하라고 합니다.하지만 내용은 숨겨져 있다.이런 방식이 더 안전하다.세 번째 파라미터는 지속 시간입니다. 이 시간(초 단위)을 초과하면 계정이 자동으로 잠깁니다.다음 오류가 발생할 수 있습니다.
    could not decrypt key with given passphrase
    이것은 암호가 틀렸다는 것을 가리키며, 정확한 암호를 입력하면 된다.
    personal.lockAccount(youraccount)
    

    계좌를 잠그다.
    web3.toWei(val,"qwq")
    

    수량이 val인 qwq 단위를 wei 단위로 변환합니다.3. admin 명령
    admin.datadir
    

    현재 저장된 데이터의 디렉토리 보기
    admin.nodeInfo.enode
    

    노드 정보 보기
    admin.peers
    

    노드 목록을 봅니다.
    admin.addPeer("enode://.........@ip:port")
    

    노드를 추가합니다.
    admin.startRPC("host", port)
    

    RPC 켜기
    admin.stopRPC()
    

    RPC 종료4.net 명령
    net.peerCount
    

    노드 수를 확인합니다.
  • go-ethereum과 상호작용할 때 내가 겪은 몇 가지 문제:
  • Insufficient funds for gas * price + value
    어떤 사람은 val가 0일 때 이런 상황을 초래할 수 있다고 말한다. 나는 chainId가 0이 되지 않는 전제에서 모든 계좌에 충분한 돈이 있다는 것을 보증한다.이렇게 하면 이 문제는 해결된다.
    Intrinsic gas too low
    네가 준 돈이 없어졌다.너에게 충분한 돈이 있다는 것을 설명한다.하지만 충분하지 않으니 가스값을 높이면 된다.
    Intrinsic gas exceeds block limit
    한편으로는 네가 준 돈이 너무 많을 수도 있어.이때 가스를 줄이면 됩니다.다른 한편으로는 최소한의 돈을 줘도 안 돼.이때 수정chainId중의gaslimit을 충분하게 늘리면 됩니다.
    reference: 블록체인 - 창세 블록(windows 개인 체인 이더리움 네트워크 구축) 이더리움 win7-64에서 개인 체인 채굴 붕괴 문제 geth 설정 중,genesis.json의 몇 가지 문제는 이더리움 수수료 부족 이상(insufficient funds) 블록체인 입문(2): 이더리움 개인 체인을 구축하고 발굴을 집행한다.go-ethereum 학습노트(一) Intrinsic gas too low and exceeds block limit 이더리움 이태방의 흔한 문제와 오류 Web3j error: Intrinsic gas too low go-ethereum 배치 사유 체인 이더리움 채굴 조작 지침 이더리움 go-ethereum 클라이언트(셋) 두 가지 전절점 가동 모드 go-ethereum이 거래를 발기하고 실행하는 절차 이더리움 실행miner.start 엔드 솔루션 go-ethereum Command Line Options Management APIs 반환

    좋은 웹페이지 즐겨찾기