Если, например, организация А хочет создать смарт-контракт, управляющий группой устройств. Но поскольку каждое устройство использует псевдоним, и он может изменить его позже, есть ли способ построить контракт таким образом, чтобы каждое устройство имело определенный адрес в течение определенного периода времени (например, месяц) и доступно ли оно сейчас в Эфируме, чтобы что организация А может выдавать адреса для устройств, присоединяющихся к смарт-контракту? Просто подумайте о частном приложении на эфириуме, контролируемом одним лицом, а также о том, что он хотел бы обнаруживать плохих пользователей.
Было бы лучше, если бы устройства имели полупостоянные идентификаторы, свой адрес, и тогда Entity A будет иметь исключительный контроль над управлением белым списком или аналогичной системой контроля доступа. Контракт будет отклонять взаимодействие с неавторизованных устройств.
Это всего лишь очень быстрый набросок, в котором некоторые важные аспекты замалчиваются, чтобы проиллюстрировать идею.
pragma solidity 0.4.25;
contract SimpleWhitelist {
address public owner;
mapping(address => bool) public isAuthorizedDevice;
modifier onlyOwner {
require(msg.sender==owner);
_;
}
modifier onlyAuthorizedDevice {
require(isAuthorizedDevice[msg.sender]);
_;
}
constructor() public {
owner = msg.sender;
}
function addOrRemoveDevice(address device, bool authorized) public onlyOwner {
isAuthorizedDevice[device]=authorized;
}
function somethingDevicesDo() public onlyAuthorizedDevice {
// contract rejects transaction unless the sender is whitelisted.
}
}
Надеюсь, поможет.
Мохамед
Роб Хитченс
Мохамед