Какова цель функции WithdrawalContract
в этом случае? Если becomeRichest
делать то же самое, но с определенным условием и добавлять ожидающий вывод средств к pendingWithdrawals
.
Это функция конструктора. Он выполняется только один раз, то есть во время создания / развертывания контракта.
Здесь, в этом случае, при создании / развертывании контракта он устанавливает самого richest
из тех, кто развертывает контракт, а наиболее mostSent
- значение, отправленное во время развертывания.
Имя контракта используется в качестве функции конструктора только в более ранних выпусках. Поскольку здесь имя контракта - WithdrawalContract
а конструктор - WithdrawalContract()
как версия говорит о solidity ^0.4.11
. Теперь - последняя solidity ^.0.4.24
- solidity ^.0.4.24
- это устарело и использует функцию constructor()
.
Вы можете прочитать документацию здесь для последней версии.
Когда контракт создается, его конструктор (функция, объявленная с ключевым словом constructor) выполняется один раз.
А в документации здесь для версии 0.4.11
описан ваш случай,
Контракты могут быть созданы «извне» или из контрактов солидности. Когда контракт создается, его конструктор (функция с тем же именем, что и контракт) выполняется один раз.
Это изменение было введено в версии 0.4.22
- согласно примечаниям к выпуску здесь ,
Конструкторы теперь должны быть определены с помощью
constructor(uint arg1, uint arg2) { ... }
чтобы выделить их и избежать ошибок при переименовании контрактов, но не их конструкторов.
Санта Сам
Ачала Диссанаяке
Санта Сам