What is Segwit?
Will it truly allow for Bitcoin to scale
for mass adoption?
And how does it even work?
Well stick around,
in this episode
of Crypto whiteboard Tuesday
we’ll answer these questions and more.
Hi, I’m Nate Martin
from 99Bitcoins.com
and welcome to
Crypto Whiteboard Tuesday
where we take complex
cryptocurrency topics,
break them down
and translate them into plain English.
Before we begin,
don’t forget to subscribe to the channel
and click the bell
so you’ll immediately get notified
when a new video comes out.
Today’s topic is Segregated Witness,
or Segwit for short.
Segwit is an upgrade
to the Bitcoin network
that was activated in August of 2017.
It was first introduced
by Developer Pieter Wiulle
at the Scaling Bitcoin conference
in December 2015.
Segwit aims to solve several issues:
one of which is Bitcoin’s scalability.
Bitcoin transactions are written
on a Blockchain,
an immutable ledger
on which transactions
are bundled together into blocks
that are chained one to the other,
in order to determine their order.
A new block is created
roughly every 10 minutes.
Additionally,
Bitcoin’s protocol limits
the capacity of a block to 1mb,
which limits a Bitcoin block to around
2700 transactions on average.
This creates a problem
when a lot of people are trying
to send Bitcoins simultaneously
as the queue of transactions
waiting to enter the blockchain
gets longer and longer..
While Visa can process
1,700 transactions per second,
Bitcoin can process only 4,
not nearly a scale that could handle
mass adoption.
In order for Bitcoin to truly
become usable on a worldwide scale,
it needs to find a way to increase
its transaction capacity.
Another issue Segwit addresses
is transaction malleability.
Every Bitcoin transaction has 3 parts –
who sent it (also known as input),
who receives it (output),
and a digital signature
that verifies that the sender
is eligible to send the coins.
It turns out that Bitcoin’s code
allows digital signatures to be altered
while a transaction is still
waiting to get confirmed.
The signature alteration
can be done in such a way that
if you run a mathematical check on it,
it is still valid according to the network.
But if you run
a hashing algorithm on it,
it gives a different result.
Let me explain with an example:
For the sake of simplicity
let’s say that
the signature value was “3”,
but instead of “3”
I change it to “03” or “3+7-7”.
While mathematically,
the values are all the same,
so it’s still a valid signature,
if I hash these different versions
I will get different results,
since hashing depends on
how you write the value
and not just the value itself.
Since the hash is the transaction’s id
in the blockchain,
this means I can effectively change
any unconfirmed transaction’s id
to a different id
and it will still be valid.
Creating a new transaction id
for an existing transaction
can be problematic
for a number of reasons:
First, if you want to build
second layer solutions
on top of the Bitcoin network,
like the Lightning Network,
you need to make sure
no one can alter the first layer
since the one relies on the other.
If you want to learn more
about the Lightning Network
make sure to catch our episode
about it as well.
Second, altering transaction ids
can cause issues
if you’re spending or accepting
unconfirmed funds.
Let’s go through another example:
Alice pays Bob in transaction X
which is currently unconfirmed.
Bob uses these unconfirmed funds
to pay for a product online
from Charlie (transaction Y).
Meanwhile, Charlie sends Bob
his product
before waiting for confirmation
on transaction Y.
After receiving his product,
Bob does some technical tinkering,
and maliciously changes,
or malleates, Alice’s payment
so that her transaction,
X gets confirmed
but with a different transaction id.
Transaction Y,
which is what Bob sent to Charlie,
is now invalid
since it relies on transaction X’s
original transaction id
that now no longer exists.
So Charlie won’t get paid
even though he’s already delivered
the goods to Bob.
Bad Bob…
While scalability and malleability
are the two most burning issues
that Segwit addresses,
there are a variety of other
technical issues
that Segwit tackles
that don’t necessarily affect
the end user directly.
Now that you know what Segwit is,
let’s talk a bit about
how it actually works.
Segregated Witness
is a proposed change
to how blocks are structured.
Non segwit blocks,
also known as legacy blocks,
have a total of 1mb space
for all of the block data:
inputs, outputs, signatures
and additional scripts.
Segwit blocks, on the other hand,
are in fact large 4mb blocks
that consist of a base transaction block
and an extended block.
So contrary to popular opinion,
Segwit is indeed a block size increase.
Segwit blocks move the digital signature
and other data known as “the witness”
outside of the base transaction block.
The witness data
will still be transmitted,
but it is placed inside the extended block.
So the base transaction block includes
the information about the sender
and the receiver
and the witness data is left blank
and doesn’t take up any more space.
This allows for more transactions
to fit inside
the 1mb base transaction block.
The extended block (the additional 3mb)
include all of the witness data
that isn’t mandatory
in the base transaction block.
The new block format
Segwit introduces
achieves two major goals:
First, it moves the digital signature
outside of the base transaction block.
This way,
if someone changes the signature
on the transaction,
it won’t affect the transaction id.
This in effect solves
the transaction malleability issue….
you know…Bob.
Second, it shrinks down
the base transaction data.
Since the witness data takes up to
65% of the transaction size,
moving it outside of
the base transaction block
allows more transactions
to fit inside that 1mb block.
I know what you’re probably thinking.
If Segwit is in fact
a block size increase,
why not just increase the block size
to 4mb in the first place?
Why all of this hassle
and block size debate
if the end result is in fact bigger blocks.
The answer is really quite simple –
developers wanted to avoid
a contentious hard fork
in the Bitcoin network.
You see, Bitcoin’s protocol
specifically states that
blocks can’t exceed 1mb.
So, developers had to find a solution
that will allow the network to accept
both Segwit and Non Segwit blocks
if a hard fork were to be avoided.
The solution of a 1mb block
with an “extension” of another 3mb
is something that is still acceptable
under the existing protocol.
Legacy nodes receive
only the 1mb base transaction block
without the extended block.
They still consider them valid.
Segwit nodes receive
both the base and extended block
(up to 4mb in total)
and can validate
the transactions in full.
This backwards compatibility
is also known as a soft fork.
This approach is a lot less risky
since it doesn’t require nodes to update
their software to support Segwit.
It means that even if it takes years
for all of the nodes to upgrade,
the network will still function.
Now let’s move on to how
Segwit blocks are measured by miners.
While legacy blocks
are measured in size,
Segwit blocks are measured in weight.
Block Weight is a new concept
introduced in Segwit,
and it’s calculated
on a per-transaction basis.
Each transaction has a “weight”
which is defined this way:
The size of your Base Tx
(meaning that which doesn’t include
the witness data) *3
+ the Full Tx size,
that=your transaction weight.
Legacy transactions
don’t have the ability to strip away
the witness data from the base transaction,
so their weight will always be
4 times the tx size.
For example, a legacy TX of 1000 bytes
will have a weight of 1000*3 + 1000
=4000.
Segwit transactions, on the other hand,
are going to have a weight of less than
4 times the tx size.
For example,
a 1200 byte Segwit transaction
comprised of 400 bytes of witness data
will have a weight of
(1200 (the total transaction size)-400
(the size of the witness data))
leaving the base transaction size of 800,
times 3,
making 2400,
add the total transaction size of 1200,
and that=3600.
In short,
the larger the size of the witness data,
the lighter the tx weight will be.
This incentivizes miners
to prefer ‘lighter’ Segwit transactions
over ‘heavier’ ones,
since they can fit more of them
inside a base transaction block,
which increases the potential miner’s fee,
should that block be accepted
and confirmed.
While in theory Segwit transactions
can create a block up to 4mb in size,
in practice the average block size
that includes Segwit transactions
is around 2mb.
Today, almost 50% of
all Bitcoin transactions
are Segwit transactions.
Since legacy transactions
are larger in size,
they require higher network fees
to get confirmed faster.
And finally,
Segwit addresses start with a “3”
while legacy addresses start with a “1”.
Thanks to its advantages,
more and more popular wallets
and exchanges support Segwit.
Ledger, TREZOR, Electrum,
Exodus and Coinomi
are just some of the major
wallet brands
that have already adopted Segwit.
It’s important to note that
if you have a legacy wallet
and you want to move
to a Segwit wallet
you will need to create
a brand new Segwit wallet
and move all of your funds
to its address.
There’s no way to just upgrade
your existing legacy wallet
to work with Segwit.
Segwit is the first of many upgrades
that will gradually allow for Bitcoin
to scale for mass adoption.
It’s a fundamental change
that will allow further developments
down the road
like the Lightning Network,
Schnorr Signatures and more.
As more and more wallets
adopt Segwit,
it will soon become the standard
for any Bitcoin transaction.
Well, that’s it for today’s episode
of Crypto Whiteboard Tuesday.
Hopefully by now you understand
what Segwit is –
An upgrade to the Bitcoin protocol
that Segregates the witness data
from the base transaction data,
hence achieving a smaller
transaction size,
securing transactions
from malleability issues and more.
You may still have some questions.
If so, just leave them
in the comment section below.
And if you’re watching this video
on YouTube,
and enjoy what you’ve seen,
don’t forget to hit the like button.
Then make sure to subscribe
to the channel
and click that bell
so that you’ll be notified
as soon as we post new episodes.
Thanks for watching me
here at the Whiteboard.
For 99bitcoins.com,
I’m Nate Martin,
and I’ll see you…in a bit.