본문 바로가기

오탈자 정보

[코어 이더리움 프로그래밍]_오탈자

현재까지 발견된 위 책의 오탈자 정보와 오류, 그리고 보다 매끄러운 문장을 위해 수정한 내용을 안내해드립니다. 집필과 편집 시에 미처 확인하지 못하고 불편을 끼쳐드려 죄송하다는 말씀을 드립니다. 아래의 오탈자 사항은 추후 재쇄 시에 반영하도록 하겠습니다. 


이외의 오탈자 정보를 발견하시면 지은이(jaehyunpark.kr@gmail.com )나 출판사(readers.jpub@gmail.com)로 연락주시면 고맙겠습니다.


최종수정일자: 2018년 11월 8일

2쇄본 오탈자


5쪽 세 번째 문단 7-8행(얍얍얍 님 제보)

이 과정에서 다오는 이더리움의 스마트 컨트랙트 기술을 이용해 스피릿(spilit)이라는 컨트랙트를 개발했다. 스피릿 컨트랙트는

==>

이 과정에서 다오는 이더리움의 스마트 컨트랙트 기술을 이용해 스플릿(split)이라는 컨트랙트를 개발했다. 스플릿 컨트랙트는


329쪽 찾아보기에서(얍얍얍 님 제보)

스피릿(spilit)

==>

스플릿(split)


xvii쪽 하단에서 4-5행(강O진 님 제보)

서비스를 개발 수 있을 것이다.

==>

서비스를 개발할 수 있을 것이다.



최종수정일자: 2018년 5월 10일

1쇄본 오탈자


8쪽 두 번째 문단 6행에서(저자 제보) 

전자 서명이 되어 있기 그렇기 때문에 

==>

전자 서명이 되어 있기 때문에


9쪽 그림 1-4 하단 부분에서(저자 제보)

SAP(Single Page App)  ==> SPA(Single Page App)


55쪽 맨 하단 코드에서 56쪽 상단 코드(저자 제보)

};


V : 0x1c

R : 0x668ed6500efd75df7cb9c9b9d8152292a75453ec2d11030b0eec42f6a7ace602

S : 0x3efcbbf4d53e0dfa4fde6c6d9a73221418652abd66dff7fdd78b8kcc28b9fbf

==>

V : 0x1c

R : 0x668ed6500efd75df7cb9c9b9d8152292a75453ec2d11030b0eec42f6a7ace602

S : 0x3efcbbf4d53e0dfa4fde6c6d9a73221418652abd66dff7fdd78b8kcc28b9fbf

};


58쪽 1행에서(저자 제보)

트랜잭션 ==> 트랜잭션


173쪽 표 4-3의 external의 설명에서

외부 소유 어카운트에서만 함수를 호출할 수 있다.

==>

EOA나 다른 컨트랙트에서 함수를 호출할 수 있으나 동일한 컨트랙트 내부에서는 external 함수를 호출할 수 없다.


215쪽 코드 4-20 아래에서 3행에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

(책에 아래와 같은 부분이 총 7곳이 나오는데, 모두 이와 같이  수정되어야 합니다)

transfer 함수에서 Transfer(msg.sender,_to,value) 이벤트를 부른다.

==>

transfer 함수에서 emit를 이용하여 Transfer(msg.sender,_to,value) 이벤트를 발생시킨다.


216쪽 그림 4-17 아래 2번에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


216쪽 마지막 문장 다음에 아래의 문장 추가(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

이전 버전까지는 Transfer(msg.sender,_to,value)와 같이 이벤트를 바로 호출하여 Transfer 이벤트를 발생시킬 수 있었지만, 호출 부분만으로는 함수 호출인지 이벤트 호출인지 구분하기가 어려웠다. 하지만  Solidity 0.4.21부터는 emit라는 키워드를 사용해 이벤트가 호출되도록 수정되었기 때문에 함수 호출인지 이벤트 호출인지를 호출 부분만 봐도 명확히 구분할 수 있게 되었다.


220쪽 상단 코드 박스 1행에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


221쪽 하단 코드 박스 아래에서 3행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


224쪽 상단 코드 박스 25번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


225쪽 상단 코드 박스 아래에서 3행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


226쪽 상단 코드 박스 아래에서 3행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


227쪽 코드 4-27의 아래에서 3행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Transfer(msg.sender,_to,_value);

==>

emit Transfer(msg.sender,_to,_value);


234쪽 41번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

FundTransfer(msg.sender, amount, true);

==>

emit FundTransfer(msg.sender, amount, true);


237쪽 표 4-17 msg.gas 특수 변수의 기능 설명에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

남아있는 가스량을 반환한다. 

==>

남아있는 가스량을 반환한다. 솔리디티 0.4.21에서는 deprecate되었고 gasleft()를 사용해야 한다.


234쪽 49번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

GoalReached(beneficiary, amountRaised);

==>

emit GoalReached(beneficiary, amountRaised);


234쪽 68번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

FundTransfer(beneficiary, amountRaised, false);

==>

emit FundTransfer(beneficiary, amountRaised, false);


243쪽 코드 4-31 23번 행(저자 제보)

userBalances[msg.sender] = 0;

==>

balanceOf[msg.sender] = 0;


244쪽 43번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

WithdrawBalance("Succeeded in fallback",msg.gas);

==>

emit WithdrawBalance("Succeeded in fallback",gasleft());


244쪽 45번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

else WithdrawBalance("Failed in fallback",msg.gas);

==>

else emit WithdrawBalance("Failed in fallback",gasleft());


244쪽 48번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

WithdrawBalance("All GoalAmount is withdrawed",msg.gas);

==>

emit WithdrawBalance("All GoalAmount is withdrawed",gasleft());


244쪽 53번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

if(fundAddress.call.value(msg.value).gas(msg.gas)

==>

if(fundAddress.call.value(msg.value).gas(gasleft())


244쪽 63번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

WithdrawBalance("Failed in withdraw",msg.gas);

==>

emit WithdrawBalance("Failed in withdraw",gasleft());


244쪽 66번 행(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

else WithdrawBalance("Succeeded in withdraw",msg.gas);

==>

else emit WithdrawBalance("Succeeded in withdraw",gasleft());


248쪽 하단 코드 박스 2행(저자 제보)

msg.sender.send(shares[msg.sender]);

==>

msg.sender.transfer(shares[msg.sender]);


252쪽 상단 코드 박스 2행(저자 제보)

return "Hello";

==>

return "안녕";


252쪽 상단 코드 박스 5행(저자 제보)

return "안녕";

==>

return "Hello";


279쪽 하단 두 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)

Request

curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}' http://127.0.0.1:8545

279쪽 하단 첫 번째와 280쪽 상단 첫 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)
Request
curl -X POST --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0xb03a25d609780f5ec5daeb6fc57754f302b2febc", "11111111", 3600],"id":67}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data {"jsonrpc":"2.0","method":"personal_unlockAccount","params":["0xb03a25d609780f5ec5daeb6fc57754f302b2febc", "11111111", 3600],"id":67}' http://127.0.0.1:8545

280쪽 두 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)
Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{<위의 매개변수>}],"id":1}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{<위의 매개변수>}],"id":1}' http://127.0.0.1:8545

280쪽 세 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)
Request
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":74}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":74}' http://127.0.0.1:8545

280쪽 마지막 코드 박스와 291쪽 상단 첫 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)
Request
curl -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":74}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"miner_stop","params":[],"id":74}' http://127.0.0.1:8545

281쪽 첫 번째 코드 박스에서(저자 제보)(솔리디티 최신 버전 업그레이드로 인한 수정)
Request
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xba28aae07689369591f76031e54520c97244db24", "latest"],"id":1}' http://127.0.0.1:8545
==>
Request
curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0xba28aae07689369591f76031e54520c97244db24", "latest"],"id":1}' http://127.0.0.1:8545