CryptoZombies 1-4,5
3564 ワード
payable
受信可能
例
function buySomething() external payable {
//함수를 실행시킨 사람이 0.001 ether를 보냈는지 확인.
require(msg.value == 0.001 ether);
}
}
transfer
ex) owner.Transfer(thi.balance):この見積書の所有者に現在の残高(thi.balance)を送信します.
蘭手
ex)0から99までの整数
uint randNonce = uint(keccak256(now, msg.sender, nonce)) % 100
# nonce: 동일한 해시 함수에서 딱 한 번만 쓰여야 되는 값
上のやり方は正直ではない.トランザクションは、希望する結果値がある場合にのみ共有されるためです.調整関数が実行されている場合は、トランザクションとして特定のノードまたはノード全体に通知されます.ランダム関数を実行して、私が望む値がない場合は、私だけに通知し、私が望む値が現れたら、全体に通知します.これはランダム関数ですが、私が望む値しか得られません.
例えば、コインをひっくり返すと、実際には正面と裏面が現れ、人々に教えるときは、正面だけのようです.
コイン枚
ERC 721の実装
balanceOf(_address)
ownerOf(_tokenId)
トークン転送ロジック
1) transfer( _toAddress, _tokenId)
ライブラリの使用
library example {
function ...
}
import "라이브러리가 존재하는 파일";
using example(라이브러리 이름) for 변수 타입;
SafeMath
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
使用方法using SafeMath for uint256;
uint256 a = 4;
uint256 b = a.add(4); //b=8
uint256 c = a.mul(4); //c=16
uint256 d = a.div(2); //d=2
uint256 e = a.sub(3); //e=1
addのパラメータは2つなのに、どうして1つしか使えないのですか?using SafeMath for int256;宣言時に、各関数の最初のパラメータにaが渡されるからです.
Reference
この問題について(CryptoZombies 1-4,5), 我々は、より多くの情報をここで見つけました https://velog.io/@taejuk/CryptoZombies-1-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol