<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "BitcoinKernel",
  "identifier" : "/documentation/BitcoinKernel/BlockchainSync/Update/init(state:tip:remoteTip:)",
  "metadataVersion" : "0.1.0",
  "role" : "Initializer",
  "symbol" : {
    "kind" : "Initializer",
    "modules" : [
      "BitcoinKernel"
    ],
    "preciseIdentifier" : "s:13BitcoinKernel14BlockchainSyncV6UpdateV5state3tip9remoteTipA2E5StateO_AA05BlockI0VALtcfc"
  },
  "title" : "init(state:tip:remoteTip:)"
}
-->

# init(state:tip:remoteTip:)

Creates an [`BlockchainSync.Update`](/documentation/BitcoinKernel/BlockchainSync/Update).

```
init(state: BlockchainSync.Update.State, tip: BlockTip, remoteTip: BlockTip)
```

## Parameters

`state`

The lifecycle phase this Update represents.

`tip`

The local chainstate’s best block.

`remoteTip`

The source’s best block as of the last poll.

## Discussion

Public so [`BlockSource`](/documentation/BitcoinKernel/BlockSource) conformers and tests can construct
synthetic updates; production code receives Updates from
[`updates()`](/documentation/BitcoinKernel/BlockchainSync/updates()).