搭建第一個(gè)fabric網(wǎng)絡(luò)(版本1.4.2)——(四)配置生成

配置生成

以下操作均于centos7.6虛擬機(jī)環(huán)境使用root用戶完成,可以根據(jù)具體需求進(jìn)行選擇實(shí)體機(jī)與不同用戶選擇

該教程(搭建第一個(gè)fabric網(wǎng)絡(luò)1.4.2版本)基本完全基于官方文檔進(jìn)行转质,適用于缺乏了解的新手與感興趣的人群


官方文檔地址:


1.cryptogen生成證書

使用cryptogen為我們的網(wǎng)絡(luò)實(shí)體生成各種加密材料( x509 證書和簽名秘鑰)歇式。這些證書是身份的代表腰根,在實(shí)體之間通信和交易的時(shí)候召川,它們?cè)试S對(duì)身份驗(yàn)證進(jìn)行簽名和驗(yàn)證划址。

首先編輯crypto-config.yaml文件,如下:(這里不對(duì)文件內(nèi)容作解釋,之后有專門章節(jié)解釋

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs: #orderer組織儒喊,生成5個(gè)orderer的身份證明
  - Name: Orderer
    Domain: orderer.com
    Specs:
      - Hostname: orderer0
      - Hostname: orderer1
      - Hostname: orderer2
      - Hostname: orderer3
      - Hostname: orderer4
  
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs: #peer組織镣奋,各1個(gè)節(jié)點(diǎn)與用戶
  - Name: Org1
    Domain: org1.com
    EnableNodeOUs: true
    Template:
      Count: 1
    Users:
      Count: 1
  - Name: Org2
    Domain: org2.com
    EnableNodeOUs: true
    Template:
      Count: 1
    Users:
      Count: 1

使用命令進(jìn)行生成:

# 在當(dāng)前目錄執(zhí)行,執(zhí)行完畢會(huì)在當(dāng)前目錄生成包含身份證明數(shù)據(jù)(x509 證書和簽名秘鑰)的目錄
cryptogen generate --config=./crypto-config.yaml

生成的文件目錄結(jié)構(gòu)如下:

crypto-config
├── ordererOrganizations
│   └── orderer.com
│       ├── ca
│       │   ├── ca.orderer.com-cert.pem
│       │   └── cb40525e702e671eca53aa829ce166dccb4e64df45703902cbe13060c2cb1cfb_sk
│       ├── msp
│       │   ├── admincerts
│       │   │   └── Admin@orderer.com-cert.pem
│       │   ├── cacerts
│       │   │   └── ca.orderer.com-cert.pem
│       │   └── tlscacerts
│       │       └── tlsca.orderer.com-cert.pem
│       ├── orderers
│       │   ├── orderer0.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── b6853a1df22aa09f409731486ad9eb5682903a0cad32869527b5a8e4c92305f1_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer0.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer1.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 17ee9e7c96496dbb631249a72d1208735c517bd9f151f2363b629c19bbcdd722_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer1.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer2.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 67cb0f79598c93ad1e9feeeb4fcc91f56b6d2883f5af2dd759ef0904c79b3e42_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer2.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   ├── orderer3.orderer.com
│       │   │   ├── msp
│       │   │   │   ├── admincerts
│       │   │   │   │   └── Admin@orderer.com-cert.pem
│       │   │   │   ├── cacerts
│       │   │   │   │   └── ca.orderer.com-cert.pem
│       │   │   │   ├── keystore
│       │   │   │   │   └── 0eb958cd99142e4d3c3828f9e1b8b71e88fabc4bd7e367ca317fb8a387773651_sk
│       │   │   │   ├── signcerts
│       │   │   │   │   └── orderer3.orderer.com-cert.pem
│       │   │   │   └── tlscacerts
│       │   │   │       └── tlsca.orderer.com-cert.pem
│       │   │   └── tls
│       │   │       ├── ca.crt
│       │   │       ├── server.crt
│       │   │       └── server.key
│       │   └── orderer4.orderer.com
│       │       ├── msp
│       │       │   ├── admincerts
│       │       │   │   └── Admin@orderer.com-cert.pem
│       │       │   ├── cacerts
│       │       │   │   └── ca.orderer.com-cert.pem
│       │       │   ├── keystore
│       │       │   │   └── 14b2244bfec1b657ef9b5553f71898affe4b909f514a4ceda0140010fb084e31_sk
│       │       │   ├── signcerts
│       │       │   │   └── orderer4.orderer.com-cert.pem
│       │       │   └── tlscacerts
│       │       │       └── tlsca.orderer.com-cert.pem
│       │       └── tls
│       │           ├── ca.crt
│       │           ├── server.crt
│       │           └── server.key
│       ├── tlsca
│       │   ├── b96fccf689f6fc0f9e2eae84d79bc043647e1ca9e42dba611d7e0b4bed964220_sk
│       │   └── tlsca.orderer.com-cert.pem
│       └── users
│           └── Admin@orderer.com
│               ├── msp
│               │   ├── admincerts
│               │   │   └── Admin@orderer.com-cert.pem
│               │   ├── cacerts
│               │   │   └── ca.orderer.com-cert.pem
│               │   ├── keystore
│               │   │   └── f07b713faf1a7d5758374e2107d3feedf4d564f6edb747168ce59e1264f74804_sk
│               │   ├── signcerts
│               │   │   └── Admin@orderer.com-cert.pem
│               │   └── tlscacerts
│               │       └── tlsca.orderer.com-cert.pem
│               └── tls
│                   ├── ca.crt
│                   ├── client.crt
│                   └── client.key
└── peerOrganizations
    ├── org1.com
    │   ├── ca
    │   │   ├── ca08395fb3cfb0d1b698416bb3abd9f57483fce46f380ac79bc16c53744439df_sk
    │   │   └── ca.org1.com-cert.pem
    │   ├── msp
    │   │   ├── admincerts
    │   │   │   └── Admin@org1.com-cert.pem
    │   │   ├── cacerts
    │   │   │   └── ca.org1.com-cert.pem
    │   │   ├── config.yaml
    │   │   └── tlscacerts
    │   │       └── tlsca.org1.com-cert.pem
    │   ├── peers
    │   │   └── peer0.org1.com
    │   │       ├── msp
    │   │       │   ├── admincerts
    │   │       │   │   └── Admin@org1.com-cert.pem
    │   │       │   ├── cacerts
    │   │       │   │   └── ca.org1.com-cert.pem
    │   │       │   ├── config.yaml
    │   │       │   ├── keystore
    │   │       │   │   └── 72c79456aa95890758259901e37c48487adbb373ddeb4d563c755ecaea900973_sk
    │   │       │   ├── signcerts
    │   │       │   │   └── peer0.org1.com-cert.pem
    │   │       │   └── tlscacerts
    │   │       │       └── tlsca.org1.com-cert.pem
    │   │       └── tls
    │   │           ├── ca.crt
    │   │           ├── server.crt
    │   │           └── server.key
    │   ├── tlsca
    │   │   ├── 9a0b43daa17c7e5a8e048c51f4d45b97838ab1b0efdc535aba20f0c38129935d_sk
    │   │   └── tlsca.org1.com-cert.pem
    │   └── users
    │       ├── Admin@org1.com
    │       │   ├── msp
    │       │   │   ├── admincerts
    │       │   │   │   └── Admin@org1.com-cert.pem
    │       │   │   ├── cacerts
    │       │   │   │   └── ca.org1.com-cert.pem
    │       │   │   ├── keystore
    │       │   │   │   └── a9b98d7f41aa787b6738e5289ce1de06ff5248d5d77b8e42ea338a81e11a8482_sk
    │       │   │   ├── signcerts
    │       │   │   │   └── Admin@org1.com-cert.pem
    │       │   │   └── tlscacerts
    │       │   │       └── tlsca.org1.com-cert.pem
    │       │   └── tls
    │       │       ├── ca.crt
    │       │       ├── client.crt
    │       │       └── client.key
    │       └── User1@org1.com
    │           ├── msp
    │           │   ├── admincerts
    │           │   │   └── User1@org1.com-cert.pem
    │           │   ├── cacerts
    │           │   │   └── ca.org1.com-cert.pem
    │           │   ├── keystore
    │           │   │   └── f031fec28dbcc5f267941ef4a414ab2b0f5a8a887bb580f9656e694a0f821f67_sk
    │           │   ├── signcerts
    │           │   │   └── User1@org1.com-cert.pem
    │           │   └── tlscacerts
    │           │       └── tlsca.org1.com-cert.pem
    │           └── tls
    │               ├── ca.crt
    │               ├── client.crt
    │               └── client.key
    └── org2.com
        ├── ca
        │   ├── a4d9659f098499ce52016d3a4f5ecabefb453993424bdafe1f2da9d8ae4a83c7_sk
        │   └── ca.org2.com-cert.pem
        ├── msp
        │   ├── admincerts
        │   │   └── Admin@org2.com-cert.pem
        │   ├── cacerts
        │   │   └── ca.org2.com-cert.pem
        │   ├── config.yaml
        │   └── tlscacerts
        │       └── tlsca.org2.com-cert.pem
        ├── peers
        │   └── peer0.org2.com
        │       ├── msp
        │       │   ├── admincerts
        │       │   │   └── Admin@org2.com-cert.pem
        │       │   ├── cacerts
        │       │   │   └── ca.org2.com-cert.pem
        │       │   ├── config.yaml
        │       │   ├── keystore
        │       │   │   └── 846ff9356b6134ead2f5e9e98abfaee96b07aef1d5058977527932290efb439a_sk
        │       │   ├── signcerts
        │       │   │   └── peer0.org2.com-cert.pem
        │       │   └── tlscacerts
        │       │       └── tlsca.org2.com-cert.pem
        │       └── tls
        │           ├── ca.crt
        │           ├── server.crt
        │           └── server.key
        ├── tlsca
        │   ├── c84a4fb8ac90cfe80826975b8902fa279e38a0947028b663e455ac9da495320b_sk
        │   └── tlsca.org2.com-cert.pem
        └── users
            ├── Admin@org2.com
            │   ├── msp
            │   │   ├── admincerts
            │   │   │   └── Admin@org2.com-cert.pem
            │   │   ├── cacerts
            │   │   │   └── ca.org2.com-cert.pem
            │   │   ├── keystore
            │   │   │   └── 3dbe15dfafd8464c1c2467c1ec07c04d28b33a84a54d86b370c4af04a6821d31_sk
            │   │   ├── signcerts
            │   │   │   └── Admin@org2.com-cert.pem
            │   │   └── tlscacerts
            │   │       └── tlsca.org2.com-cert.pem
            │   └── tls
            │       ├── ca.crt
            │       ├── client.crt
            │       └── client.key
            └── User1@org2.com
                ├── msp
                │   ├── admincerts
                │   │   └── User1@org2.com-cert.pem
                │   ├── cacerts
                │   │   └── ca.org2.com-cert.pem
                │   ├── keystore
                │   │   └── 2ac7ac78c2037355571ead990e2ad10ed3d47f1fa9580c37d90d9d27d7bb769a_sk
                │   ├── signcerts
                │   │   └── User1@org2.com-cert.pem
                │   └── tlscacerts
                │       └── tlsca.org2.com-cert.pem
                └── tls
                    ├── ca.crt
                    ├── client.crt
                    └── client.key

2.configtxgen生成配置交易

configtxgen 工具用來(lái)創(chuàng)建四個(gè)配置構(gòu)件:

  • 排序節(jié)點(diǎn)的 創(chuàng)世區(qū)塊,
  • 通道 配置交易,
  • 兩個(gè) 錨節(jié)點(diǎn)交易怀愧,一個(gè)對(duì)應(yīng)一個(gè) Peer 組織侨颈。

排序區(qū)塊是排序服務(wù)的創(chuàng)世區(qū)塊,通道配置交易在通道創(chuàng)建的時(shí)候廣播給排序服務(wù)芯义。錨節(jié)點(diǎn)交易哈垢,指定了每個(gè)組織在此通道上的錨節(jié)點(diǎn)。

首先編輯configtx.yaml文件扛拨,如下:(這里不對(duì)文件內(nèi)容作解釋耘分,之后有專門章節(jié)解釋

Organizations:
    - &Orderer
        Name: Orderer
        ID: Orderer
        MSPDir: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Orderer.member')"
            Writers:
                Type: Signature
                Rule: "OR('Orderer.member')"
            Admins:
                Type: Signature
                Rule: "OR('Orderer.admin')"
    - &Org1
        Name: Org1
        ID: Org1
        MSPDir: /home/test/crypto/crypto-config/peerOrganizations/org1.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org1.admin', 'Org1.peer', 'Org1.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org1.admin', 'Org1.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org1.admin')"
        AnchorPeers:
            - Host: peer0.org1.com
              Port: 7051
    - &Org2
        Name: Org2
        ID: Org2
        MSPDir: /home/test/crypto/crypto-config/peerOrganizations/org2.com/msp
        Policies:
            Readers:
                Type: Signature
                Rule: "OR('Org2.admin', 'Org2.peer', 'Org2.client')"
            Writers:
                Type: Signature
                Rule: "OR('Org2.admin', 'Org2.client')"
            Admins:
                Type: Signature
                Rule: "OR('Org2.admin')"
        AnchorPeers:
            - Host: peer0.org2.com
              Port: 7051

Capabilities:
    Channel: &ChannelCapabilities
        V1_4_2: true
    Orderer: &OrdererCapabilities
        V1_4_2: true
    Application: &ApplicationCapabilities
        V1_4_2: true
        V1_3: false
        V1_2: false
        V1_1: false
Application: &ApplicationDefaults
    Organizations:
    Policies: &ApplicationDefaultPolicies
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
    Capabilities:
        <<: *ApplicationCapabilities
Orderer: &OrdererDefaults
    OrdererType: etcdraft
    Addresses:
        - orderer0.orderer.com:7050
        - orderer1.orderer.com:7050
        - orderer2.orderer.com:7050
        - orderer3.orderer.com:9050
        - orderer4.orderer.com:9050
    BatchTimeout: 2s
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 10 MB
        PreferredMaxBytes: 2 MB
    MaxChannels: 0
    Kafka:
        Brokers:
            - kafka0:9092
    EtcdRaft:
        Consenters:
            - Host: orderer0.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer0.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer0.orderer.com/tls/server.crt
            - Host: orderer1.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer1.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer1.orderer.com/tls/server.crt
            - Host: orderer2.orderer.com
              Port: 7050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer2.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer2.orderer.com/tls/server.crt
            - Host: orderer3.orderer.com
              Port: 9050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer3.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer3.orderer.com/tls/server.crt
            - Host: orderer4.orderer.com
              Port: 9050
              ClientTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer4.orderer.com/tls/server.crt
              ServerTLSCert: /home/test/crypto/crypto-config/ordererOrganizations/orderer.com/orderers/orderer4.orderer.com/tls/server.crt
        Options:
            TickInterval: 500ms
            ElectionTick: 10
            HeartbeatTick: 1
            MaxInflightBlocks: 5
            SnapshotIntervalSize: 20 MB
    Organizations:
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
        BlockValidation:
            Type: ImplicitMeta
            Rule: "ANY Writers"
    Capabilities:
        <<: *OrdererCapabilities
Channel: &ChannelDefaults
    Policies:
        Readers:
            Type: ImplicitMeta
            Rule: "ANY Readers"
        Writers:
            Type: ImplicitMeta
            Rule: "ANY Writers"
        Admins:
            Type: ImplicitMeta
            Rule: "MAJORITY Admins"
    Capabilities:
        <<: *ChannelCapabilities

Profiles:
    SampleDevModeEtcdRaft:
        <<: *ChannelDefaults
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *Orderer
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Orderer
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Org1
                    - *Org2

    TwoOrgsChannel:
        Consortium: SampleConsortium
        <<: *ChannelDefaults
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities

使用下列命令進(jìn)行配置生成:

# 生成創(chuàng)世塊
configtxgen -profile SampleDevModeEtcdRaft -channelID test-sys-channel -outputBlock genesis.block
# 通道配置交易
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx channel.tx -channelID mychannel
# 錨節(jié)點(diǎn)配置
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org1anchors.tx -channelID mychannel -asOrg Org1
# 錨節(jié)點(diǎn)配置
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate Org2anchors.tx -channelID mychannel -asOrg Org2

生成后應(yīng)有如下文件

channel.tx  configtx.yaml  genesis.block  mychannel.block  Org1anchors.tx  Org2anchors.tx

至此,相關(guān)配置已經(jīng)生成完畢绑警,接下來(lái)我們可以使用docker進(jìn)行網(wǎng)絡(luò)的啟動(dòng)了求泰。

另外在啟動(dòng)前,我們需要把生成的相關(guān)文件copy到其他機(jī)器上计盒,使用copy的方式或者scp命令均可渴频,這里不再贅述。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末北启,一起剝皮案震驚了整個(gè)濱河市卜朗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咕村,老刑警劉巖场钉,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異懈涛,居然都是意外死亡惹悄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門肩钠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泣港,“玉大人,你說(shuō)我怎么就攤上這事价匠〉鄙矗” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵踩窖,是天一觀的道長(zhǎng)坡氯。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么箫柳? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任手形,我火速辦了婚禮,結(jié)果婚禮上悯恍,老公的妹妹穿的比我還像新娘库糠。我一直安慰自己,他們只是感情好涮毫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布瞬欧。 她就那樣靜靜地躺著,像睡著了一般罢防。 火紅的嫁衣襯著肌膚如雪艘虎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天咒吐,我揣著相機(jī)與錄音野建,去河邊找鬼。 笑死恬叹,一個(gè)胖子當(dāng)著我的面吹牛贬墩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播妄呕,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼陶舞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了绪励?” 一聲冷哼從身側(cè)響起肿孵,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疏魏,沒(méi)想到半個(gè)月后停做,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡大莫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蛉腌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只厘。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烙丛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出羔味,到底是詐尸還是另有隱情河咽,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布赋元,位于F島的核電站忘蟹,受9級(jí)特大地震影響飒房,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜媚值,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一狠毯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褥芒,春花似錦嚼松、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皆刺。三九已至少辣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羡蛾,已是汗流浹背漓帅。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痴怨,地道東北人忙干。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浪藻,于是被迫代替她去往敵國(guó)和親捐迫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容