Что вы подразумеваете под частным и общественным умным контрактом в частных блочных цепях? Как его создать?

Что я сделал
1. Бегущая частная цепочка.
2. написать и развернуть смарт-контракт.
3. умный контракт отлично работает на моем личном блочном блоке

Что я хочу
1. Только авторизированная учетная запись может получить доступ к моему контракту, а не другому.
2. Я хочу сохранить журнал транзакций по контракту, на который учетная запись получает доступ к этому контракту и какой метод доступа к этой учетной записи.

5 голосов | спросил Imroz 28 12016vEurope/Moscow11bEurope/MoscowMon, 28 Nov 2016 10:40:36 +0300 2016, 10:40:36

1 ответ


2

Итак, похоже, вам просто нужны два шаблона: ограничения доступа и События , Первый бросок, если вызывающий абонент не включен в какой-либо список. Второе добавляет события к событию войти . Поэтому, если у вас только один пользователь, ваш контракт будет выглядеть примерно так:

contract SomeContract {

    //Assigned when contract is created so if you create it it is you
    address public owner = msg.sender; 

    event LogAccessAttempt(address account, string function, uint timestamp); // Event

    // This could be any function
    function someFunction()
    {
      // Do logging
      LogAccessAttempt(msg.sender,"someFunction",now);
      //only allow the owner to call this function
      if (msg.sender !=owner) throw;
      // do something else
    }

    // You can assign ownership using this function
    function changeOwner(address _newOwner)
    {
        LogAccessAttempt(msg.sender,"changeOwner",now);
        //only allow the owner to call this function
        if (msg.sender !=owner) throw;
        owner = _newOwner;
    }
}

Поскольку у вас есть больше функций, это, вероятно, немного утомительно, поэтому вы можете улучшить это, используя модификаторы, а также вы, вероятно, хотите, чтобы несколько авторизованных учетных записей, например,

contract SomeContract {

mapping(address => bool) public users;   
users[msg.sender]=true;
modifier guardAndLog(string msg )
        {
            LogAccessAttempt(msg.sender,msg,now);
            if(!users[msg.sender])
               throw
            _;
        }

    function addUser(address _newUser)
    guardAndLog("someone tried to add a user")
    {
       users[_newUser]=true
    }

    function someFunction()
     guardAndLog("someone tried to access someFunction")
    {
    // Do something
    }

   }
ответил JackWinters 30 32016vEurope/Moscow11bEurope/MoscowWed, 30 Nov 2016 01:34:42 +0300 2016, 01:34:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132