Amazon Managed Blockchain
Amazon Managed Blockchain (managedblockchain) on fakecloud: a complete 27-operation control plane for networks, members, nodes, proposals, voting, invitations, and accessors (100% conformance). restJson1.
fakecloud implements Amazon Managed Blockchain as a restJson1 service. All 27 operations ship with 100% conformance against AWS's own Smithy model, backed by account-partitioned state that persists across restarts in persistent mode. Managed Blockchain signs SigV4 with the managedblockchain scope and is routed by HTTP method plus @http URI path (POST /networks, GET /networks/{NetworkId}/members/{MemberId}, POST /networks/{NetworkId}/proposals/{ProposalId}/votes, POST /accessors, ...).
Amazon Managed Blockchain on fakecloud is a faithful control plane: every CreateNetwork / CreateMember / CreateNode / CreateProposal / CreateAccessor is reflected by its Get* / List*, the proposal/voting state machine actually runs, and approved invitation proposals materialise real Invitation records.
No real blockchain runs (documented honest gap, not stubbed)
Managed Blockchain, by design, is a managed control plane in front of Hyperledger Fabric and Ethereum networks. fakecloud does not run a real Fabric orderer, certificate authority, peer, or an Ethereum node. The endpoints it returns -- the network OrderingServiceEndpoint, each member's Fabric CaEndpoint, each node's Fabric PeerEndpoint / PeerEventEndpoint, and each Ethereum node's HttpEndpoint / WebSocketEndpoint -- are well-formed, deterministic URLs derived from the resource ids, but nothing is listening behind them: there is no orderer, CA, peer, or JSON-RPC endpoint serving a live chain. Everything that Managed Blockchain's API owns is real, account- partitioned, and persisted; only the blockchain data plane those endpoints would front is absent. This is the honest treatment: clients that create networks, manage members and nodes, drive proposals to approval, and mint token accessors behave exactly as against AWS, but no ledger is committed.
Resources
- Networks -
CreateNetwork(POST /networks) validates the requiredName,Framework(HYPERLEDGER_FABRIC/ETHEREUM),FrameworkVersion,VotingPolicy, andMemberConfiguration, mints ann-<26 uppercase alnum>id and a globalarn:aws:managedblockchain:::networks/<id>ARN, and stores the framework configuration + voting policy. For Hyperledger Fabric it atomically creates the requested first member (m-...), returning bothNetworkIdandMemberId; the network isAVAILABLE.GetNetwork,ListNetworks(filtered byname/framework/status, paginated with a round-trippingnextToken). - Members - full CRUD of
m-...members, each carrying Fabric framework attributes (CaEndpoint,AdminUsername) and an optional log-publishing configuration. A member is createdCREATINGand settles toAVAILABLEon the next read;DeleteMemberflips it toDELETED.UpdateMember/GetMember/ListMembers. - Nodes - full CRUD of
nd-...nodes carryingInstanceType,AvailabilityZone,StateDB(LevelDB/CouchDB), and deterministically derived framework endpoints (Fabric peer endpoints, or Ethereum HTTP + WebSocket endpoints).CREATINGsettles toAVAILABLE;UpdateNode,DeleteNode,GetNode,ListNodes. - Proposals + voting -
CreateProposalmintsp-..., stores theActions(Invitations/Removals), setsIN_PROGRESS, and derives anExpirationDatefrom the network'sProposalDurationInHours.VoteOnProposalrecords aYES/NOvote per member; when theApprovalThresholdPolicythreshold is met the proposal transitions toAPPROVED-- materialising each invitation into a realInvitationin the invited principal's account and applying removals -- orREJECTEDonce approval is arithmetically impossible.ListProposalVotes,GetProposal,ListProposals. - Invitations -
ListInvitationsreturns pending invitations for the calling account;RejectInvitationflips one toREJECTED. - Accessors -
CreateAccessormints a UUID accessor id, aBillingToken, and an ARN (AccessorTypeBILLING_TOKEN, statusAVAILABLE).GetAccessor,ListAccessors(filtered bynetworkType),DeleteAccessor(PENDING_DELETION). - Tagging - ARN-keyed
TagResource(POST /tags/{ResourceArn}),UntagResource,ListTagsForResource.
Validation
Model-derived input validation rejects contract violations (missing required members, out-of-set enums) with the codes each operation declares -- InvalidRequestException, ResourceNotFoundException, IllegalActionException -- so a malformed request lands on a declared error rather than a routing miss.