跳到主要内容

史蒂夫·乔布斯:管理者与傻瓜

· 阅读需 2 分钟

我在 Blind App 上遇到了“傻瓜管理”,发现这是一个非常有趣的概念。这个短语是史蒂夫·乔布斯创造的。

如果你无法观看视频,这里是他的话。

我们在苹果经历了一个阶段,我们认为,‘哦,我们要成为一家大公司,去招聘专业管理人员。’我们出去招聘了一堆专业管理人员;结果完全不奏效。他们大多数都是傻瓜。他们知道如何管理,但不知道如何做任何事情。

如果你是一个优秀的人,为什么要为一个你无法从中学习的人工作呢?你知道最有趣的是什么吗 - 你知道最好的经理人是什么样的吗?他们是那些从来不想成为经理的优秀个人贡献者,但决定必须成为经理,因为没有其他人能像他们一样做好工作。

理解去中心化身份 (DID 和 DIF)

· 阅读需 17 分钟

什么是 DIF?

去中心化身份基金会 构建去中心化身份的生态系统,并确保所有参与者之间的互操作性。

为什么?……问题是什么?

身份问题

将身份与个人可识别信息 (PII) 解耦的问题。身份由一组深具个人性的定义我们数据构成,您的身份只应对您自己负责。

具体来说,面临的挑战是

  1. 将身份与身份提供者解耦。 DIDs 应该是自我主权的,不应由中央权威拥有或控制。
  2. 将身份查找与集中系统解耦。 DIDs 和数据应该能够在去中心化系统中被找到,以便没有中央所有者可以做恶。
  3. 将身份数据与不明或未知存储解耦。 DIDs 应该能够精确控制与他人分享什么或不分享什么。

统一碎片化的格局

DIF 是一个组织,旨在统一碎片化的格局,共同解决 DID 问题并建立一个作为行业标准的生态系统。

他们如何组织这些努力?

  • 设计规范
  • 实施
  • 对齐行业参与者

人员和组织

工作组

  • 身份、名称、发现
  • 存储和计算
  • 声明和凭证

成员

  • Blockstack
  • Microsoft / IBM
  • HyperLedger
  • RSA
  • Ontology
  • Civic
  • iota

生态系统

DIF 生态系统

DID

身份是

  1. 全球唯一的
  2. 可解析的,且
  3. 具有加密验证的。

DID 格式:URN

URN 格式

DID 方法(在下面进一步解释)定义了 DIDs 如何与特定区块链一起工作。

DID 文档

  • DID 基础设施 = <DID, DID 文档> 的全球键值数据库
  • DID 文档 = 用于验证实体的公钥、认证协议和服务端点,并解释如何使用它。它可能包含三项内容:
    • 证明目的
    • 验证方法
    • 服务端点

DID 如何保护隐私?

  1. 成对伪匿名的 DIDs
  2. 链外私有数据
  3. 选择性披露

DID 方法规范 (DID <> 区块链)

定义如何在特定区块链上创建、解析和管理 (CRUD) DID 和 DID 文档。

如何加入 DID 方法注册?

https://w3c-ccg.github.io/did-method-registry/#the-registry

示例

通过示例学习:Blockstack DID 方法

  • Blockstack 如何利用 DID?
  • 如何创建一个 blockstack DID?Blockstack 如何作为身份提供者?
  • 如何解析一个 DID?

Blockstack 命名服务 (BNS)

  • 命名层 = 用户名 <> 公钥 & 指向存储的指针
  • BNS 是区块链无关的。 从 namecoint 迁移到比特币。
  • ==一个 Blockstack DID 被定义为指向由一个地址注册的第 n 个名称==。

两类

链上 DIDs

  • 两笔交易在链上注册一个名称 - 所有者地址 <> 名称
  • 一个所有者地址可以有多个链上名称和相应的 DIDs
    • 例如 did:stack:v0:15gxXgJyT5tM5A4Cbx99nwccynHYsBouzr-3 表示第四个链上名称被创建并最初分配给地址 15gxXgJyT5tM5A4Cbx99nwccynHYsBouzr

链外 DIDs,也称为子域

  • 批量编码,哈希,并稍后写入区块链。

  • 链外名称由链上名称实例化,由链外名称的后缀表示。 cicero.res_publica.idres_publica.id 的所有者处理,但并不归其所有。

Blockstack 作为身份提供者

演示: https://bitpatron.co/ 使用 Blockstack 登录

sequenceDiagram User ->> First Party: GET /login Note left of User: 登录 Note right of First Party: 存储 transitKey First Party ->> User: 重定向 User ->> Blockstack: GET /auth?authRequest=:authRequestJwt Blockstack ->> First Party: GET /manifest.json (CORS) Note left of User: 创建或选择 ID Blockstack ->> User: 重定向 User ->> First Party: GET /auth?authResponse=:authResponseJwt Note right of First Party: 用 transitKey 解密 Note left of First Party: 待处理登录 First Party ->> Blockstack: GET /v1/names/:acctName.id.blockstack Blockstack ->> First Party: 用户数据

// authRequestJwt
{
"typ": "JWT",
"alg": "ES256K"
}
{
"jti": "4d06f08b-67a7-4f7c-89fc-b8164b81f67a",
"iat": 1563432343,
"exp": 1566110743,
"iss": "did:btc-addr:19sxvnAxPXZYAEdpF7Tti6MSVhxA8PSdCT",
"public_keys": [
"03994ec7b23a8e11e40684c9b2d29febf103bd92c4bbd295f1e2537042c93ac977"
],
"domain_name": "http://localhost:4104",
"manifest_uri": "http://localhost:4104/manifest.json",
"redirect_uri": "http://localhost:4104/",
"version": "1.3.1",
"do_not_include_profile": true,
"supports_hub_url": true,
"scopes": [
"store_write"
]
}
// authResponse
{
"typ": "JWT",
"alg": "ES256K"
}
{
"jti": "30773b78-3595-499f-bbb3-d1e649470c70",
"iat": 1563432894,
"exp": 1566111294,
"iss": "did:btc-addr:1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"private_key": "已编辑 - 用 transitKey 加密",
"public_keys": [
"027c8547681cc27e27b73ee0f3c0534bdd38993dcb4c1934bf424f0b3a04dcad63"
],
"profile": null,
"username": "kirbystar.id.blockstack",
"core_token": null,
"email": null,
"profile_url": "https://gaia.blockstack.org/hub/1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH/profile.json",
"hubUrl": "https://hub.blockstack.org",
"blockstackAPIUrl": "https://core.blockstack.org",
"associationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJjaGlsZFRvQXNzb2NpYXRlIjoiMDNhMTU5YzY4YWQ1ZjFkNzcxMWY2NjJmNThkNjdmMzZlNzY3ZTBjMDBhOTU4ZWY0NzljNzU3MzU0MGFkMzExZjk2IiwiaXNzIjoiMDI3Yzg1NDc2ODFjYzI3ZTI3YjczZWUwZjNjMDUzNGJkZDM4OTkzZGNiNGMxOTM0YmY0MjRmMGIzYTA0ZGNhZDYzIiwiZXhwIjoxNTk0OTY4ODk0LjcwNSwiaWF0IjoxNTYzNDMyODk0LjcwNSwic2FsdCI6IjE4NGVhMWQyMzM3MWQ1MmYyYzhmNTAyOGUwMWYxYmZiIn0.ZceaVcIK2Z8wu6KBYOHQaK7y6BI7NfxrixphOCPs1B4hZcGYDKsuf0anbm4CdAAJbKRifCm-MYHE6fjKD9E7GQ",
"version": "1.3.1"
}
// acctName response
{
"blockchain": "bitcoin",
"status": "submitted_subdomain",
"last_txid": "851ca5e6c06723e61037aa397966aafa1a6dd7159e9e31e53116106b87101886",
"zonefile": "$ORIGIN kirbystar.id.blockstack\n$TTL 3600\n_http._tcp\tIN\tURI\t10\t1\t\"https://gaia.blockstack.org/hub/1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH/profile.json\"\n\n",
"address": "1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"zonefile_hash": "a9c016921a9a60e04776251db53a8881e6d128ce"
}
// session
{
"version": "1.0.0",
"userData": {
"username": "kirbystar.id.blockstack",
"profile": {
"@type": "Person",
"@context": "http://schema.org",
"api": {
"gaiaHubConfig": {
"url_prefix": "https://gaia.blockstack.org/hub/"
},
"gaiaHubUrl": "https://hub.blockstack.org"
}
},
"email": null,
"decentralizedID": "did:btc-addr:1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"identityAddress": "1DpKMqxBnuSSQMNun1obciPSfD9rD8KNUH",
"appPrivateKey": "已编辑",
"coreSessionToken": null,
"authResponseToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJqdGkiOiIyNmM4ZGM2Ny1lNzEwLTRlZDUtYmIxYi0yY2I1ODY5YTRkMTEiLCJpYXQiOjE1NjM0MzU2NjEsImV4cCI6MTU2NjExNDA2MSwiaXNzIjoiZGlkOmJ0Yy1hZGRyOjFEcEtNcXhCbnVTU1FNTnVuMW9iY2lQU2ZEOXJEOEtOVUgiLCJwcml2YXRlX2tleSI6IjdiMjI2OTc2MjIzYTIyNjQzMDMzMzMzODMyNjYzNTYxNjIzNjM0Mzg2MTM1MzYzNTM2MzI2MzMzNjEzMTYyMzY2NTYzNjEzNzMzNjU2NjIyMmMyMjY1NzA2ODY1NmQ2NTcyNjE2YzUwNGIyMjNhMjIzMDMyNjEzMzY1NjEzMzY0NjMzNjMyMzgzODY2MzgzMTY2MzAzNDMwMzU2MzY1MzI2MzMzNjUzNjY0MzMzMzMxMzQzNDM0NjY2MTM4MzA2NTY1MzIzMzMyNjEzMjM2NjQzMzMwMzczMzM2MzY2NTMzMzkzNzM3MzczMjMxMzMzNzM5MzcyMjJjMjI2MzY5NzA2ODY1NzI1NDY1Nzg3NDIyM2EyMjM2MzMzOTYzNjMzMDM5MzQzOTYyMzMzNjY0NjI2NTM1MzIzMTM0MzIzMjM3MzA2MzY1NjIzMTM0MzEzNjY2MzA2MzM0NjYzNDM4MzgzMjY0MzUzOTM0MzMzNDM2NjM2NjYyNjEzNzMxNjM2MjM1MzYzMTM2MzczMDY0MzUzMzY0MzQzNTY1MzMzODYyNjIzNzM1NjMzMjMzMzYzNjMyMzUzODMxMzgzOTM3NjYzMjMwNjMzNTM4MzA2NTMyMzEzODM0MzMzNTMwMzMzNjM1NjE2NDM1NjEzMTM4NjY2MjMyNjY2NDM3MzQ2MzY1NjMzNDM0MzI2NTY0MzY2NTY2NjYzMjM5NjIzNjY2Mzk2MTMyMzgzMTM4MzEzMzYyMzMzMDYyMzkzMTYzMzE2MzM1Mzg2MTM4MzgzMTM5MzQ2MjYzMjIyYzIyNmQ2MTYzMjIzYTIyMzkzNzY0MzM2MzM4NjEzOTYxMzQ2NjMyMzkzNjM1MzM2MzM1MzQzNzY1MzIzNTYzMzMzMzM4MzIzMDYxMzczMjYyMzU2NjY0MzQ2NjM1NjE2NDYxNjY2NjMwMzQzNzM1Mzk2NDM0MzI2MTYxMzgzNDM1MzkzNzY2MzY2MjM5NjEyMjJjMjI3NzYxNzM1Mzc0NzI2OTZlNjcyMjNhNzQ3Mjc1NjU3ZCIsInB1YmxpY19rZXlzIjpbIjAyN2M4NTQ3NjgxY2MyN2UyN2I3M2VlMGYzYzA1MzRiZGQzODk5M2RjYjRjMTkzNGJmNDI0ZjBiM2EwNGRjYWQ2MyJdLCJwcm9maWxlIjpudWxsLCJ1c2VybmFtZSI6ImtpcmJ5c3Rhci5pZC5ibG9ja3N0YWNrIiwiY29yZV90b2tlbiI6bnVsbCwiZW1haWwiOm51bGwsInByb2ZpbGVfdXJsIjoiaHR0cHM6Ly9nYWlhLmJsb2Nrc3RhY2sub3JnL2h1Yi8xRHBLTXF4Qm51U1NRTU51bjFvYmNpUFNmRDlyRDhLTlVIL3Byb2ZpbGUuanNvbiIsImh1YlVybCI6Imh0dHBzOi8vaHViLmJsb2Nrc3RhY2sub3JnIiwiYmxvY2tzdGFja0FQSVVybCI6Imh0dHBzOi8vY29yZS5ibG9ja3N0YWNrLm9yZyIsImFzc29jaWF0aW9uVG9rZW4iOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5rc2lmUS5leUpqYUdsc1pGUnZRWE56YjJOcFlYUmxJam9pTUROaE1UVTVZelk0WVdRMVpqRmtOemN4TVdZMk5qSm1OVGhrTmpkbU16WmxOelkzWlRCak1EQmhPVFU0WldZME56bGpOelUzTXpVME1HRmtNekV4WmprMklpd2lhWE56SWpvaU1ESTNZemcxTkRjMk9ERmpZekkzWlRJM1lqY3paV1V3WmpOak1EVXpOR0prWkRNNE9Ua3paR05pTkdNeE9UTTBZbVkwTWpSbU1HSXpZVEEwWkdOaFpEWXpJaXdpWlhod0lqb3hOVGswT1RjeE5qWXhMak0yT1N3aWFXRjBJam94TlRZek5ETTFOall4TGpNMk9Td2ljMkZzZENJNklqVXhOMkZsWkdVd1ltVmpOMkpqTlRnek5qY3lOREkwT1RsaE1EVm1OVEEwSW4wLjlkY2VHX3I4OVdDSUVsTklseFNtUGxPblhiSVNsZEZDejJxOTJRMnpJSk9XXzhnTjVYT0xsZnNkREJVamlQZlU3eTNyRGFXSUxfTUJicVVnVnBFanhRIiwidmVyc2lvbiI6IjEuMy4xIn0.0Xqtw-71TJ9ybWx4Uxre0Gxkisay20xn1vqwr0WaKvVeCzwv_NO6YZnVOmGPM4cF4wex06yLYWasqQWgCi-m_g",
"hubUrl": "https://hub.blockstack.org",
"gaiaAssociationToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksifQ.eyJjaGlsZFRvQXNzb2NpYXRlIjoiMDNhMTU5YzY4YWQ1ZjFkNzcxMWY2NjJmNThkNjdmMzZlNzY3ZTBjMDBhOTU4ZWY0NzljNzU3MzU0MGFkMzExZjk2IiwiaXNzIjoiMDI3Yzg1NDc2ODFjYzI3ZTI3YjczZWUwZjNjMDUzNGJkZDM4OTkzZGNiNGMxOTM0YmY0MjRmMGIzYTA0ZGNhZDYzIiwiZXhwIjoxNTk0OTcxNjYxLjM2OSwiaWF0IjoxNTYzNDM1NjYxLjM2OSwic2FsdCI6IjUxN2FlZGUwYmVjN2JjNTgzNjcyNDI0OTlhMDVmNTA0In0.9dceG_r89WCIElNIlxSmPlOnXbISldFCz2q92Q2zIJOW_8gN5XOLlfsdDBUjiPfU7y3rDaWIL_MBbqUgVpEjxQ"
},
"transitKey": "已编辑"
}

从 DID 获取实体 - 通用解析器

域名 <--DNS-->  IP
表示的实体 <--通用解析器--> 自主身份标识符
DID <--通用解析器--> DID 文档

通用解析器

示例驱动程序:

  • did:stack: 从 BlockStack 注册的 DID,例如 did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0
  • did:btcr: 从 BTC 注册的 DID
  • 等等。

运行解析器

git clone https://github.com/decentralized-identity/universal-resolver.git
cd universal-resolver/
docker-compose -f docker-compose.yml pull
docker-compose -f docker-compose.yml up
curl -X GET http://localhost:8080/1.0/identifiers/did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0 | jq .

{
"redirect": null,
"didDocument": {
"id": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"service": [
{
"type": "blockstack",
"serviceEndpoint": "https://core.blockstack.org"
}
],
"publicKey": [
{
"id": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"type": "Secp256k1VerificationKey2018",
"publicKeyHex": "0232131c807c4b184582280bca141f2583f6a1de2e0d3e6984cdb4724527f581fa"
}
],
"@context": "https://w3id.org/did/v0.11"
},
"resolverMetadata": {
"duration": 96,
"driverId": "did-stack",
"driver": "HttpDriver",
"didUrl": {
"didUrlString": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"did": {
"didString": "did:stack:v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"method": "stack",
"methodSpecificId": "v0:SZBrgLTLXZL9ZAX8GVNgvZKcU4DJBXkUQr-0",
"parseTree": null,
"parseRuleCount": null
},
"parameters": null,
"parametersMap": {},
"path": "",
"query": null,
"fragment": null,
"parseTree": null,
"parseRuleCount": null
}
},
"methodMetadata": {}
}

或使用 Blockstack 的解析器

https://github.com/blockstack/blockstack-core/blob/master/docs/blockstack-did-spec.md#33--resolving-a-blockstack-did

DID <> 现实世界:可验证声明

现在我们知道如何识别和解析“谁是谁”,而不必携带个人可识别信息。然而,如果我们想让 DID 与现实世界实体关联呢?

想象一下,艾丽斯拥有一个国家颁发的 DID,并希望在不透露真实姓名和确切年龄的情况下购买一些酒。

饮酒

答案是使用“可验证声明”(也称:凭证、证明)。

  1. 声明 = 我们对实体所知的属性,采用主题-属性-值关系,例如姓名、电子邮件、年龄、会员资格等。
  2. 可验证 = 附加的证明(签名)

可验证声明数据模型

身份资料

类型:无序 URI 集合

签名:签名 [0..1]

实体凭证

id: URI

类型:无序 URI 集合

颁发者:URI

颁发:字符串形式的日期

声明:声明

声明

(至少一个自定义属性)

可验证声明

签名:签名

签名

(可能会有所不同,但预计包括

至少一个签名、一个对签署实体的引用,以及一个

签署日期的表示)

id

id

1

0..*

一个简单的身份资料

{
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"type": ["身份", "人"],
"name": "艾丽斯·博布曼",
"email": "[email protected]",
"birthDate": "1985-12-14",
"telephone": "12345678910"
}

一个简单的声明

{
"id": "http://example.gov/credentials/3732",
"type": ["凭证", "年龄证明凭证"],
"issuer": "https://dmv.example.gov",
"issued": "2010-01-01",
"claim": {
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"ageOver": 21
}
}

一个简单的可验证声明

{
"@context": "https://w3id.org/security/v1",
"id": "http://example.gov/credentials/3732",
"type": ["凭证", "年龄证明凭证"],
"issuer": "https://dmv.example.gov",
"issued": "2010-01-01",
"claim": {
"id": "did:ebfeb1f712ebc6f1c276e12ec21",
"ageOver": 21
},
"revocation": {
"id": "http://example.gov/revocations/738",
"type": "简单撤销列表2017"
},
"signature": {
"type": "链接数据签名2015",
"created": "2016-06-18T21:19:10Z",
"creator": "https://example.com/jdoe/keys/1",
"domain": "json-ld.org",
"nonce": "598c63d6",
"signatureValue": "BavEll0/I1zpYw8XNi1bgVg/sCneO4Jugez8RwDg/+
MCRVpjOboDoe4SxxKjkCOvKiCHGDvc4krqi6Z1n0UfqzxGfmatCuFibcC1wps
PRdW+gGsutPTLzvueMWmFhwYmfIFpbBu95t501+rSLHIEuujM/+PXr9Cky6Ed
+W3JT24="
}
}

这等同于一个 JOSE JWT 可验证声明

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2Rtdi
5leGFtcGxlLmdvdiIsImlhdCI6MTI2MjMwNDAwMCwiZXhwIjoxNDgzMjI4ODAwL
CJhdWQiOiJ3d3cuZXhhbXBsZS5jb20iLCJzdWIiOiJkaWQ6ZWJmZWIxZjcxMmVi
YzZmMWMyNzZlMTJlYzIxIiwiZW50aXR5Q3JlZGVudGlhbCI6eyJAY29udGV4dCI
6Imh0dHBzOi8vdzNpZC5vcmcvc2VjdXJpdHkvdjEiLCJpZCI6Imh0dHA6Ly9leG
FtcGxlLmdvdi9jcmVkZW50aWFscy8zNzMyIiwidHlwZSI6WyJDcmVkZW50aWFsI
iwiUHJvb2ZPZkFnZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly9kbXYu
ZXhhbXBsZS5nb3YiLCJpc3N1ZWQiOiIyMDEwLTAxLTAxIiwiY2xhaW0iOnsiaWQ
iOiJkaWQ6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiYWdlT3ZlciI6Mj
F9fX0.LwqH58NasGPeqtTxT632YznKDuxEeC59gMAe9uueb4pX_lDQd2_UyUcc6
NW1E3qxvYlps4hH_YzzTuXB_R1A9UHXq4zyiz2sMtZWyJkUL1FERclT2CypX5e1
fO4zVES_8uaNoinim6VtS76x_2VmOMQ_GcqXG3iaLGVJHCNlCu4

DID 和物联网

幻灯片

关键要点

DID

  • 可能是身份导向供应商的差异化因素,但对其他供应商来说是一个 中和器(在 MMRs、中和器和差异化特征中)。
  • 在大量产品中保护隐私,以便没有中央公司能够从各种产品的所有账户中了解您的所有信息。
  • 与可验证声明结合使用,它利用加密,但仍然需要在物理世界中建立信任。

区块链开发者可以做什么?

  • 加入 DIF。
  • 提出一种在其区块链上操作 DIDs 的 DID 方法。
  • 建立我们自己的去中心化身份提供者。

参考文献

Stratechery:为什么亚马逊收购全食超市?

· 阅读需 5 分钟

回答:亚马逊希望为其杂货服务购买一个客户。

背景

  • 亚马逊收购全食超市 = 苹果的 iPhone 击败 Palm

    • 不要误解目标与战略与战术 - 苹果的战略
      • 不是制造手机,而是构建个人电脑
      • 不是为手机增加功能,而是将手机简化为一个应用
      • 不是复制运营商,而是利用他们的客户关系
    • iPhone 是有史以来最成功的产品 = 亚马逊是有史以来最具主导地位的公司
  • 亚马逊的目标

    1. 最初,Amazon.com 的目标是成为信息类产品和服务的领先在线零售商,最初专注于书籍。
    2. 然后,它表示“我们的愿景是成为地球上最以客户为中心的公司;建立一个人们可以来寻找和发现他们可能想在线购买的任何东西的地方。”
    3. ==亚马逊的目标是从所有经济活动中分一杯羹。==
  • 亚马逊的战略

    • 对企业:AWS。假设所有企业很快都会成为互联网驱动的企业。
    • 对客户:Prime。假设优越的成本和优越的选择不是可持续的。通过 Prime,客户甚至不会考虑替代品。
      • 然而
        • 杂货是最大的零售类别。
        • 杂货是提醒用户还有其他替代品的最持久机会。
  • 战术:开发杂货服务

为什么亚马逊没有找到正确的战术?

书籍杂货
高 SKU = 大选择较少 SKU(30k - 50k)
标准化质量不一
不易腐烂易腐烂

亚马逊生鲜的成本劣势

  1. 如果不规模化,易腐烂商品的高成本
  2. 规模需要基于城市

为什么收购全食超市(而不是做其他事情)可以解决规模问题?

==具有 1) 高固定成本 2) 高规模收益的商业原始模型==

  • 将基础设施解耦为最小可销售单元(MSUs)
  • 业务本身是这些 MSUs 的 ==首个最佳客户==
  • 将 MSUs 转售给外部

AWS 三层

服务原始组件S3, EC2, RDS, SNS, ...
平台AWS高固定成本 + 规模收益
基础设施模块化组件数据中心、服务器、存储、交换机、带宽
  • MSUs 是 S3、EC2、RDS、SNS 等
  • 首个最佳客户是 amazon.com
  • 将 MSUs 转售给非亚马逊开发者

Amazon.com 三层

服务套餐FDA, 亚马逊支付, ...
平台履行中心高固定成本 + 规模收益
基础设施模块化供应商制造商、第三方商家, ...
  • MSUs 是 FDA、亚马逊支付等。
  • 首个最佳客户是亚马逊第一方电子商务
  • 将 MSUs 转售给第三方商家

这里的洞察是,杂货业务没有首个最佳客户。

完美客户

将全食超市纳入大局后,我们可以看到 ==亚马逊购买的不仅仅是一个零售商——它购买的是一个客户==。

Amazon.com 三层 + 客户

客户全食超市、配送、餐厅
服务杂货肉类、水果、蔬菜、非易腐烂商品, ...
平台履行中心高固定成本 + 规模收益
基础设施模块化供应商自有品牌、品牌商品、本地供应商、区域供应商, ...

现在亚马逊杂货服务可以服务于亚马逊生鲜和全食超市,未来餐厅或其他任何业务也可以使用它。

代表性启发式 —— 在不确定时做判断

· 阅读需 4 分钟

面对不确定的事物,人们通常基于启发式来判断。启发式很有用,但是也会带来偏误:比如 看不清=距离远 这一判断在大多数情况下是正确的,但是如果你故意模糊某个东西,人们会错误地以为它更远。

人们在判断概率和估值时候,常常使用这样三个启发式:代表性 (representativeness) 启发式,易得性 (availability) 启发式,调整与锚定 (adjustment and anchoring) 启发式。

代表性 (representativeness) 启发式

  1. ==人们会错把代表性当概率==。邻居描述史蒂夫是一个羞涩寡言,乐于助人,但是对人和世界不感兴趣的人。让人们去判断他的职业是哪种职业的可能性更大:农民、推销员、机长、图书管理员、医生。人们会错认为史蒂夫是图书管理员,因为这符合他们对这个职业的刻板印象。
  2. 那么考虑到哪些因素就能够更好地帮助对概率的判断呢?
    1. 先验概率,又名==基础比率==。人们在考虑代表性的时候,尤其是得到了无意义的证据的时候,会下意识地忽略基础比率,使用代表性来错误的做判断。同样的是上面的史蒂夫问题,应用先验概率和贝叶斯才能得到正确的答案。
    2. 样本大小。相比于样本揭示的规律,样本大小有时候能够更好的解释问题。
    3. 对几率的正确理解。赌徒谬误,比如开大小的时候错误地以为概率会自我修正到中间,但是实际上只是自我稀释罢了,连开十次“大”和五五开的概率是一样的。
    4. 可预测性。可预测性越高,预估值的区间就越广。比如单凭一个对教师教学水平的简短的评测,是不应该能够判断出这个教师五年之后的教学水平的。
    5. 小心过度自信而对自己的预测产生的有效性幻觉 (illusion of validity) ,原因是确认偏误 (confirmation bias),即人们会倾向于寻找到能够支持自己观点的证据,对支持自己观点的信息更加关注,或者把信息往能支持自己观点的方向解释。从几个独立的事件来做判断的效果会比冗余的有相关性的事件来做判断效果好。
    6. 回归均值。人们往往忽略这一趋势的存在,即便意识到也很容易随意地解释其原因。例如,在飞行员的训练中,教官发现,在平稳着陆后给表扬,下一次就会表现得相对更差;在硬着陆后给批评,下一次就会表现得相对更好,然后教官会错误地以为,是表扬和批评导致了下一次的表现。而实际上只是下一次回归均值而已。因此,人们通常会高估批评的效果,低估表扬的效果。

好的战略与坏的战略(第二部分)

· 阅读需 6 分钟

4 为什么会有这么多坏战略?

有三个原因-

  1. 做出选择是痛苦的
    • 民主投票可能导致投票悖论(得出不合逻辑的结果,如 A > B > C > A)。例如,DEC 公司在做出战略选择时有三个选项 - 生产服务器“盒子”、 “芯片”或“解决方案”。首席执行官肯·奥尔森让人们达成共识。然而,你无法让下属组织自愿放弃他们的热情。最终,他们未能选择其中任何一个,答案是“DEC致力于提供高质量的产品和服务,并成为数据处理领域的领导者。”
    • 艾森豪威尔在1952年赢得总统选举,并承诺促使苏联撤出东欧。然而,经过研究,他发现自己无法做到这一点,只能面对现实。
    • 英特尔首席执行官安迪·格罗夫将公司从生产动态随机存取存储器(DRAM)转向专注于微处理器的生产。回顾来看,那是一个伟大的举动,但在他当时,这是在巨大的压力下做出的决定。
  2. 人们喜欢在不思考的情况下遵循模板
    • 将领导力与战略混淆。领导力和战略有相似之处,但实质上是不同的。
      • 领导力让人们在为改变而牺牲时感到更好。
      • 战略决定哪种改变值得追求。
    • 错误地认为拥有战略等于拥有好的战略。战略模板层出不穷,人们往往在不思考的情况下直接采用,从而导致无数坏战略的产生。
  3. 新思想运动:人们错误地相信积极的态度和强烈的愿望可以获得他们想要的一切。
    • 这种“积极能量”是人民的鸦片,使他们懒于关注真正有助于结果的执行。

5 好战略的核心

好战略的核心

  1. 诊断:简化问题,识别挑战和障碍。
  2. 指导政策:具体应对这些问题和挑战。
  3. 一致行动:在指导政策下,采取一致的行动。

三个例子:

在商业中,挑战通常是应对变化和竞争。

  1. 诊断障碍的具体结构,而不仅仅是命名绩效目标。
  2. 选择一个整体指导政策来应对障碍,以便获得某种杠杆或优势。
  3. 设计一套行动和资源分配的配置,以实施所选择的指导政策。

在许多大型组织中,挑战通常被诊断为内部问题。

  1. 组织的竞争问题可能远不如其自身过时的惯例、官僚主义、根深蒂固的利益集团、各单位之间缺乏合作以及简单的管理不善所带来的障碍严重。
  2. 重组与更新。
  3. 人员、权力和程序的变化。

亚马逊的飞轮

  1. 诊断电子商务和云计算是高成本高回报的业务。因此,公司应保持或增加高回报,同时降低成本。
  2. 设计飞轮的政策。见下图。
  3. 在飞轮周围构建基础设施和服务。

杰夫·贝索斯在餐巾纸上绘制的亚马逊商业模型

我认为“一致行动”非常有趣。

  • 一致行动意味着这些行动应朝同一方向对齐,而不是相互冲突。例如,作为一名经理,当我向任何人介绍任何流程时,我的原则是“我绝不会做对你的工作没有帮助的事情。”
  • 战略对齐很难实时安排。它是由领导者设计并在系统中强制执行的。
  • 集中控制的系统听起来不好,但系统的每个组件不能完全自主运作。例如,在制造业中,销售人员喜欢通过紧急订单来取悦客户,但制造人员更喜欢长时间稳定的生产。紧急订单和稳定的生产无法同时进行。管理层必须做出权衡。

好战略,坏战略

· 阅读需 6 分钟

简介:有的放矢

战略是设计并打出一套组合拳:敌人在哪里,哪里该打,哪里不该打?怎么挥拳?第一拳怎样才能帮助第二拳第三拳?

战略的核心 = 分析现状 + 指导策略 + 连贯的行动

第一部分:好战略,坏战略

1 好的战略出乎意料之外

好的战略出乎意料之外,合乎情理之中。比如 97 年乔布斯回归苹果的翻盘策略:他大刀阔斧地缩减产品线,专注到少数几个挣钱的产品。当问及如何对付如日中天的 wintel 联盟的时候,他没有搞浮夸的战略演讲,没有制定宏伟的增长目标,他只是笑着说我会等待下一波浪潮.

还有一个例子是海湾战争沙漠风暴行动,曝光在媒体报道里的主力缓慢推进,但是另外一波部队却像是钩子一样从另外一个方向深入敌方偷偷奇袭。

什么都做,认为什么都重要,就等同于认为什么都不重要。好的领导者不仅需要知道做什么,还要知道不做什么。

2 用发现的眼光看力量

最最基础的战略是SO战略 —— 优势 (Strength) 加机会 (Opportunity),那么这里优势从哪里来呢?

莎士比亚在哈姆雷特里说的好:"世上本无所谓好和坏,思想使然。" 用动态的观点看世界,优势和劣势是相对的。典型的例子是大卫与歌利亚的传说。从世俗的角度来讲,大卫弱而歌利亚强,大卫是初生牛犊,歌利亚是经验丰富的巨型战士。而大卫却用投石带战胜了歌利亚。

沃尔玛战胜 Kmart 的故事就是一个从看不到的地方发现优势的故事。美国零售业的传统智慧是,一个品类丰富的零售超市需要开在有至少10万人口的地方,而沃尔玛能够开在人口更少的地方,为什么?因为沃尔玛有更高效的供应链管理,店与店之间形成了一个有机的网络;而 Kmart 的店与店之间联系没有那么紧密,库存管理成本更高,采购的议价权更小。

冷战军备竞赛时期,安迪马歇尔对付苏联的策略——发展比较优势,利用美国的经济和科技优势,发展那些让对方应对起来很花钱、但是那些应对措施又不会对美国产生威胁的技术,比如做提升导弹精度、开发无声潜艇之类的事情。最终拖垮苏联。

3 坏战略

坏的战略是形式主义,有四大基本特征:

  1. 空话套话 ==故弄玄虚== (fluff),战略不应该是一堆高大上的名词的堆砌。

    • 比如,一家银行说"我们的基本战略是做一家以客户为中心的中介",其实本质上就是"我们银行的基本战略是做一家银行。"
  2. 无法直面挑战

    • 如果你无法直面==阻力==,就不会有战略。相反,你只会得到一个难以达到的目标。
    • 让我想到了 root level metrics 的选择要非常小心,==没法量化就没法改进。==
    • 一个正面的例子是 DARPA。
  3. 错把目标当战略

    • 比如有家公司号称20/20战略——今年收入要增加20%,利润率达到至少20%,这其实不是战略,这只是目标。
    • 指标不是战略。
  4. 子目标无关紧要或者不切实际

    • Goal 是总目标,Objective 是子目标
    • 好的战略把有限的能量和资源集中到单个或者少量子目标上,达成这些子目标能够衍生出新的优势。

4 为什么会有这么多坏的战略?

主要有三个原因:

  1. 做选择是令人痛苦的事情

    • 投票导致了投票悖论:民主投票会投出 A > B > C > A 这种非理性的结果。
    • 艾森豪威尔竞选总统时放弃了许诺,而英特尔 CEO 安迪格鲁夫艰难地决定从做 DRAM 到做微处理器的战略转型。
  2. 人们

好的战略与坏的战略(第一部分)

· 阅读需 6 分钟

引言:专注于障碍

战略就像设计和组合一系列的攻击动作:敌人在哪里?该打哪里?哪里不该打?如何出拳?你的第一拳如何帮助第二拳和第三拳?

战斗组合

本书的关键思想是好的战略的核心。战略的核心 = 诊断 + 指导方针 + 一致的行动

第一部分 好的与坏的战略

1 好的战略令人惊讶

好的战略令人惊讶但又合乎逻辑。例如,当史蒂夫·乔布斯回到苹果时,他将产品线缩减到几个盈利的产品。当被问及如何与Wintel标准竞争时,他只是微笑着说:“我会等待下一个重大事件。”

另一个例子是沙漠风暴。尽管媒体关注的是主力部队在前线缓慢移动,但另一组军队则在南伊拉克的空旷沙漠中以“左钩”的方式移动。

做所有事情和考虑所有事情意味着一切都是同等不重要的。好的领导者应该知道该做什么和不该做什么。

2 发现力量

当我们问什么是战略101时,一个基本的答案是SO战略(优势 + 机会)。

莎士比亚在《头盔》中说:没有什么是好或坏的,思考使其如此。从动态的角度来看,强项和弱项是相对的。大卫与歌利亚的故事就是一个很好的例子。人们可能认为小而缺乏经验的大卫永远无法与巨人且经验丰富的歌利亚抗衡。然而,事实是大卫利用牧羊人的投石器击败了缓慢而笨拙的歌利亚。

沃尔玛与Kmart是另一个在别人几乎看不到的地方发现力量的例子。传统的零售智慧认为,一个全品类的杂货店必须设在至少有10万人口的地区。然而,沃尔玛可以在不足10万人口的地方开店。这是如何发生的?因为沃尔玛拥有更高效的供应管理系统,使这些商店形成了一个有机网络;相反,Kmart的商店之间没有紧密的关系,无法团结,无法降低库存成本,也无法作为一个整体与供应商谈判。

在冷战期间,安德鲁·马歇尔设计了与苏联竞争的战略,利用美国的经济和技术优势,开发成本巨大但无法建立实际攻击威胁的事物,比如提高导弹的准确性或安静的潜艇。

3 坏战略

坏战略是一种形式主义。人们错误地认为战略的形式是最重要的,无法接受现实。有四个标志可以识别坏战略。

  1. ==空洞的口号==:战略不应仅仅是华丽的流行语的集合。

    • 例如,一家大型银行说:“我们的基本战略是以客户为中心的中介。” = “我们银行的基本战略就是做银行。”
  2. ==未能面对挑战==:

    • 如果你未能识别和分析障碍,你就没有战略。相反,你要么有一个拉伸目标,一个预算,或一份你希望发生的事情的清单。
    • 建立=根本性指标需要谨慎。==如果你无法衡量它;你就无法改善它。然而,你是否在改善正确的事情?==
      • 以OKR驱动的谷歌与以KPI驱动的百度
    • 一个成功的例子是DARPA。
  3. 将目标误认为战略。

    • 例如,一个20/20目标 - 我们每年将收入增长至少20%。我们将保持至少20%的利润率。
    • 指标本身并不是战略。
  4. 糟糕的战略目标

    • 目标是你目标的子目标。
    • 一个好的战略通过将精力和资源集中在一个或少数几个关键目标上来运作,这些目标的实现将导致一系列有利的结果。
    • 什么是糟糕的目标?
      1. 狗的晚餐目标。再次强调,一切重要的事情等于一切不重要的事情。
      2. 蓝天目标。

9倍效应

· 阅读需 1 分钟

一个新产品的失败率往往高达 40% 至 90% 。为什么呢?9倍效应:你的新产品必须比现有的替代品好9倍才能赢得市场。

  • 公司经常会高估新产品3倍。
    • 他们正是因为不满足于满于现状,相信创新是有效的,才会做这个新产品。
    • 宜家效应:劳动可以增加劳动者对劳动成果的喜爱。
    • 视创新为重要的标准。
  • 消费者经常会低估新产品3倍。
    • 对现状感到满意,并厌恶改变.
    • 由于不了解产品,消费者往往对新产品持怀疑态度。

科技独角兽的问题

· 阅读需 2 分钟
  1. 数百万用户喜欢这些独角兽的品牌和领导者。 那些技术大佬拥有一切 - 除了获得高额利润的途径。

  2. 在过去的25年里,有三件事发生了变化。

    1. 由于云计算,智能手机和社交媒体的发展,独角兽公司的快速增长变得更加容易。
    2. 低利率让投资者获得回报。
    3. 一些知名公司(如:谷歌,脸书,阿里,腾讯)都已经证明了财富主要是来自于:
      • 巨大的市场,高利润和自然垄断
      • 有限的实物资产和轻度监管
  3. 由于独角兽的市场存在争议,尽管销量快速增长,但利润率并未持续改善。

  4. 不惜任何代价购买客户的闪电理念见顶。 在独角兽之后,必须设计一种新的,更有说服力的创业方式。

唉! 安德鲁格罗夫说 - 成功滋生了自满情绪。 自满会导致失败。 只有偏执狂(拥抱改变的人)才能生存。

构架入门

· 阅读需 5 分钟

什么是构架

构架是软件系统的形状。拿建筑物来举例子:

  • 范式 paradigm 是砖块
  • 设计原则是房间
  • 组件是建筑

他们共同服务于一个特定的目的,就像医院治疗病人,学校教育学生一样。

我们为什么需要架构?

行为 vs. 结构

每一个软件系统提供两个不同的价值给利益相关者:行为与结构。软件开发者必须确保这两项价值都要高

==由于其工作的需要,软件架构师更多地聚焦于系统的结构而不是特性和功能。==

终极目标——==减少每加一个新特性所需要耗费的人力成本==

架构服务于软件系统的整个生命周期,使其易于理解,开发,测试,部署和操作。 其目标是最小化每个业务用例的人力资源成本。

O’Reilly 出版的《软件架构》一书很好地介绍了这样五种基本的构架。

1.分层架构

分层架构是被广泛采用,也是被开发者所熟知的一种架构。因此,它也是应用层面上事实上的标准。如果你不知道应该使用什么架构,用分层架构就是不错的选择。

示例

  • TCP/IP模式:应用层 > 运输层 > 网际层 > 网络接口层
  • Facebook TAO网络层 > 缓存层(follower + leader) > 数据库层

优缺点:

  • 优点
    • 易于使用
    • 职责划分
    • 可测试性
  • 缺点
    • 庞大而僵化
      • 想要对架构进行调整、扩展或者更新就必须要改变所有层,十分棘手

2.事件驱动架构

任何一个状态的改变都会向系统发出一个事件。系统组件之间的通信都是经由事件完成的。

一个简化的架构包含中介(mdiator),事件队列(event queue)和通道(channel)。下图所示即为简化的事件驱动架构:

示例

  • QT:信号(signals)和槽(slots)
  • 支付基础设施:由于银行网关通常有较高的延迟,因此银行的架构中采用了异步技术

3.微核架构(aka Plug-in Architecture)

软件的功能被分散到一个核心和多个插件中。核心仅仅含有最基本的功能。各个插件之间互相独立并实现共享借口以实现不同的目标。

示例

  • Visual Studio Code 和 Eclipse
  • MINIX 操作系统

4.微服务架构

大型系统被解离成众多微服务,每一个都是单独部署的单位,他们之间通过RPCs进行通信。

uber architecture

示例

5.基于空间的架构

“基于空间的架构”这一名称来源于“元组空间”,“元组空间“有”分布式共享空间“的含义。基于空间的架构中没有数据库或同步数据库访问,因此该架构没有数据库的瓶颈问题。所有处理单元共享内存中应用数据副本。这些处理单元都可以很弹性地启动和关闭。

示例:详见 Wikipedia

  • 主要被使用Java的架构所采用:例如:JavaSpaces