Research Article

[Retracted] Enabling Decentralized and Auditable Access Control for IoT through Blockchain and Smart Contracts

Algorithm 2

Capability smart contract.
contract capability:
register(token):
// verify if the policy exists
if ! exist(hash(token)) then
token.status=“active”
put(token)
store(token)
return true
else
return false
end if
query(token):
get(token)
if error != nil then
  return error
else
  status=token.status
  return status
end if
generate(issuer, privkey, user, device, resource, action):
   time=get(current_system_time)
   id = get(random_ID)
   sig = sig_func(privkey, id, time, issuer, user,
   device, resource, action)
   token=JSON(id, time, issuer, user, device,
   resource, action, sig)
register(token)
return token
revoke(token):
get(token)
if error != nil then
  token.status=“inactive”
  return true
else
  return false
end if